C ifdef&;solaris

C ifdef&;solaris,c,solaris,C,Solaris,我想在SunOS上编译时取消定义变量。因此,我试图把 #ifdef SunOS #undef FOO #endif 但它不起作用。问题出在ifdef sunos?我应该声明它,还是编译器自己做 问候 您的编译器将包含许多预定义的变量。请参阅编译器文档以了解该列表是什么 如果你想让一个软件可以在多个(unixlike)平台上构建,那么看看下面的例子。它有一点学习曲线,但从长远来看回报非常丰厚 添加: 此外,编译器可能有一种列出预定义宏的方法。例如,使用gcc,touch foo.h;cpp-dM

我想在SunOS上编译时取消定义变量。因此,我试图把

#ifdef SunOS
#undef FOO
#endif
但它不起作用。问题出在ifdef sunos?我应该声明它,还是编译器自己做

问候
您的编译器将包含许多预定义的变量。请参阅编译器文档以了解该列表是什么

如果你想让一个软件可以在多个(unixlike)平台上构建,那么看看下面的例子。它有一点学习曲线,但从长远来看回报非常丰厚

添加:
此外,编译器可能有一种列出预定义宏的方法。例如,使用gcc,
touch foo.h;cpp-dM foo.h
生成了一个所有这些的列表,在OS X上使用gcc可以得到119。但是文档可能会给出编译器为此建议使用的宏的一些指示(但通常来说,autoconf仍然是一种更好的技术)。

您的编译器将包含许多预定义的变量。请参阅编译器文档以了解该列表是什么

如果你想让一个软件可以在多个(unixlike)平台上构建,那么看看下面的例子。它有一点学习曲线,但从长远来看回报非常丰厚

添加:
此外,编译器可能有一种列出预定义宏的方法。例如,使用gcc,
touch foo.h;cpp-dM foo.h
生成了一个所有这些的列表,在OS X上使用gcc可以得到119。但是文档可能会给出编译器为此建议使用的宏的一些指示(但是通常来说,autoconf仍然是一种更好的技术)。

这没什么错,
cpp
接受这个片段就好了。你看到的问题是什么?

这没什么问题,
cpp
接受这个片段就好了。您看到的问题是什么?

我不知道有哪款Solaris编译器为您预定义了
SunOS


Sun编译器在“cc”手册页的
-D
选项描述下列出了它们预定义的宏,包括
\uuuu-Sun
\uuuu-SunOS\u5\u10
(用于“5.10”的uname-r),但不只是简单的
SunOS

我不知道有任何Solaris编译器为您预定义
SunOS
SunOS


Sun编译器在“cc”手册页的
-D
选项描述下列出了他们预定义的宏,包括
\uuu-Sun
\uuu-SunOS\u5\u10
(对于“5.10”的uname-r),但不仅仅是简单的
SunOS

,C/C++缺少一个指令:#ifndef(::int-sum(vector)),或其他指令。因此,成千上万的开发者不得不维护数百万行的黑客自动通信垃圾。解决这个问题将导致全球和平。C/C++缺少一个指令:#ifndef(::int sum(vector)),或者其他指令。因此,成千上万的开发者不得不维护数百万行的黑客自动通信垃圾。解决这一问题将导致全球和平。