这是什么#ifdef __GNUC__?

alv*_*vas 13 c gcc visual-studio predefined-macro

我在libmagic代码中找到了这些行,(sourceforge.net/projects/libmagic/files/latest/download).他们的意思是什么?什么是python等价物?

#ifdef __GNUC__
__attribute__((unused))
#endif 
Run Code Online (Sandbox Code Playgroud)

什么__GNUC__意思? 所以它似乎检查是否安装了GCC编译器,是什么意思__CC_ARM,__ ICCARM __,__ GNUC __,_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

什么是__attribute__((unused)) 这里有一段代码片段,但没有解释:我如何最好地消除有关未使用变量的警告?

是什么样的区别__GNUC__,并_MSC_VER 有一定的解释上_MSC_VER,但它是什么一回事呢?如何检测我是否使用Visual Studio 2008编译代码?

最后一个问题:我怎样才能#ifdef检查操作系统是否正在使用GNU和MS可视化工作室编译我的python代码?

mas*_*oud 14

编译器中常见的是定义宏来确定它们是什么编译器,版本是什么,...便携式C++代码可以使用它们来发现它可以使用特定功能.

什么__GNUC__意思?

它表明我不是GNU编译器,你可以使用GNU扩展.[1]

 

什么是__attribute__((unused))

附加到变量的此属性表示该变量可能未使用.GCC不会为此变量生成未使用的变量警告.[2]

 

__GNUC__和之间有什么区别_MSC_VER

它们是两个不相关的宏.第一个说我是GNU编译器,第二个说MS编译器的版本号.但是,MS编译器不支持GNU扩展.

 

我怎样才能#ifdef检查操作系统是否正在使用GNU和MS可视化工作室编译我的python代码?

#if (defined(__GNU__) && defined(_MSC_VER))
   // ...
#endif
Run Code Online (Sandbox Code Playgroud)

  • @MM.我希望没有Microsoft编译器定义`__GNU__`(并且没有g ++版本定义`_MSC_VER`).这些宏通常用于测试您正在使用的编译器,以便您可以使用编译器特定的变体.(有更好的方法来处理这个,但对这些变量的条件编译很普遍.) (3认同)
  • 我怀疑`#if(defined(__ GNU__)&& defined(_MSC_VER)`几乎等同于#if 0。 (2认同)