相关疑难解决方法(0)

哪个跨平台预处理器定义?(__ WIN32__或__WIN32或WIN32)?

我常常看到__WIN32,WIN32或者__WIN32__.我认为这取决于使用的预处理器(来自visual studio,或gcc等).

我现在必须首先检查os,然后检查使用过的编译器吗?我们在这里使用G ++ 4.4.x,Visual Studio 2008和Xcode(我假设它是gcc)和我们正在使用的ATM __WIN32__,__APPLE____LINUX__.

c++ macros c-preprocessor

38
推荐指数
2
解决办法
6万
查看次数

为什么我会收到"警告:缺少会员的初始化程序"?[-Wmissing场-初始化]

我想知道为什么我在一个案例中得到关于初始化的警告,而不是另一个案例.代码在C++源文件中,并使用GCC 4.7 -std=c++11.


struct sigaction old_handler, new_handler;
Run Code Online (Sandbox Code Playgroud)

上面用和产生NO警告.-Wall-Wextra


struct sigaction old_handler={}, new_handler={};
struct sigaction old_handler={0}, new_handler={0};
Run Code Online (Sandbox Code Playgroud)

以上产生警告:

warning: missing initializer for member ‘sigaction::__sigaction_handler’ [-Wmissing-field-initializers]
warning: missing initializer for member ‘sigaction::sa_mask’ [-Wmissing-field-initializers]
warning: missing initializer for member ‘sigaction::sa_flags’ [-Wmissing-field-initializers]
warning: missing initializer for member ‘sigaction::sa_restorer’ [-Wmissing-field-initializers]
Run Code Online (Sandbox Code Playgroud)

我已经阅读了如何从C++正确初始化C结构?,为什么编译器会抛出这个警告:"缺少初始化程序"?结构是否初始化?http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750等错误报告.我不明白为什么未初始化的struct 没有生成警告,而初始化的struct 正在生成警告.

为什么未初始化的结构不会产生警告; 为什么初始化的结构会产生警告?

gcc initialization members compiler-warnings c++11

6
推荐指数
2
解决办法
2万
查看次数