我在the libmagic
code中找到了这些行。它们是什么意思?
#ifdef __GNUC__
__attribute__((unused))
#endif
__GNUC__
是什么意思
它似乎检查了whether GCC is installed。
什么是__attribute__((unused))
?
这里有一个代码片段,但没有解释:How do I best silence a warning about unused variables?
__GNUC__
和_MSC_VER
之间有何区别?
关于_MSC_VER
有一些解释,但它到底是关于什么的呢?
How to Detect if I'm Compiling Code with a particular Visual Studio version?
最后的问题:
如何执行相同的#ifdef
来检查哪个编译器正在编译我的代码?
2条答案
按热度按时间3yhwsihp1#
在编译器中,通常会定义宏来确定它们是什么编译器、是什么版本......可移植C++代码可以使用它们来确定它是否可以使用特定的功能。
__GNUC__
是什么意思?它表明我是一个GNU编译器,你可以使用GNU扩展。1(http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html)
什么是
__attribute__((unused))
?此属性附加到变量,意味着该变量可能未使用。GCC不会为此变量生成unused-variable-warning。2(http://gcc.gnu.org/onlinedocs/gcc-3.1.1/gcc/Variable-Attributes.html)
__GNUC__
和_MSC_VER
之间有什么区别?它们是两个不相关的宏。第一个说我是GNU编译器,第二个说MS编译器的版本号。然而,MS编译器不支持GNU扩展。
我如何做同样的
#ifdef
来检查操作系统是否使用GNU和MS Visual Studio编译我的python代码?但是,这些条件是没有机会具备在一起的!
rqqzpn5f2#
不同的编译器支持不同的特性,有时候是以不同的方式支持的。例如,GNU编译器会自动定义
__GNUC__
。__CC_ARM
、__ICCARM__
、__GNUC__
、__TASKING__
都是由项目已移植到并感兴趣的某些编译器定义的。__attribute__((unused))
条目是一个GNU特定的指示符(尽管其他编译器现在也支持它),它声明它所附加的符号可能未被使用,因此编译器应该警告您这种情况。至于如何使用这些ifdef来确定什么编译器正在构建你的代码--以你在另一个构建C的项目中阅读的相同方式来做。这些不是你的python代码的因素。