【发布时间】:2008-10-28 19:23:44
【问题描述】:
至少 libsigc++2 项目在预处理器级别、命名空间之外等定义 nil 的 OS X 标头会受到影响。至少 10.5.5 和 XCode 3.1 具有此功能。请注意,它不仅在 Objective-C 源代码中有效,在 C++ 中也是如此。
小问题:为什么?
http://ardour.sourcearchive.com/documentation/2.5/functor__trait_8h-source.html
附言我也记得来自 Objective-C 的nil。但是我看不出这样一个对其他语言的直率(恕我直言)定义的合理性,这会影响与 Objective-C 完全无关的代码(s.a.纯 C++ 项目)。
【问题讨论】:
-
其实我不同意你的观点。如果他们想定义一个非标准的预处理器符号是他们的特权,那是他们的操作系统和他们修改过的 GCC 编译器版本。微软一直在这样做。如果您不喜欢他们的编译器和头文件,请使用不同的。
-
你确定一个纯 C++ 项目,只有
标头(没有系统 .h 标头)被定义为 nil 吗?