GNOME为什么不使用C99?

| 查看杂音源代码和evince源代码,它们都仍使用C89样式在函数的开始处声明所有变量,而不是首先使用它(限制范围是好的)。他们为什么不使用C99? GNOME 3是最近发布的,杂音很新,所以如果是与旧代码样式兼容的话,这可能是一个很好的转换机会。 这是否意味着需要使用C89编写对GNOME的贡献代码?     
已邀请:
该原理可以与Glib和GTK +背后的相同原理链接: 没有C99注释或声明。   理由:我们希望GLib和GTK +   可在各种编译器上构建,并且   仍没有C99支持   广泛。 资料来源:http://live.gnome.org/GTK+/BestPractices     
说到范围,我想您仍然可以这样做:
if (condition)
{
  int temporary = expression();
  trigger_side_effect(temporary);
}
换句话说,即使在C89中,每个实际的用括号括起来的范围也可以包含新的变量声明。许多人对此感到惊讶。从这个角度来看,函数的顶级范围和其中包含的任何其他范围没有区别。变量将在所有声明其范围的作用域中可见。 请注意,我不知道GNOME样式指南是否支持此功能,但至少C89支持此功能,并且(我自己)建议使用一种技巧来使内容尽可能保持局部。     
许多人考虑在各处声明变量,而不是在代码块开头声明不好的风格。它使查找声明的工作量稍有增加,因此您必须检查整个函数才能找到所有声明。此外,无论出于何种原因,语句后声明都是GCC实施的最后C99功能之一,因此长期以来,这是主要的兼容性考虑因素。     

要回复问题请先登录注册