我在libmagic
代码中找到了这些行,(sourceforge.net/projects/libmagic/files/latest/download)。他们的意思是什么?什么是python等价物?
#ifdef __GNUC__
__attribute__((unused))
#endif
__GNUC__
的含义是什么?
所以它似乎检查是否安装了GCC编译器,What means __CC_ARM, __ICCARM__, __GNUC__, __TASKING__
什么是__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 Visual Studio 2008?
最后一个问题:我怎样才能检查操作系统是否正在使用GNU和MS可视化工作室编译我的python代码?
答案 0 :(得分:13)
在编译器中通常定义宏来确定它们是什么编译器,版本是什么,...便携式C ++代码可以使用它们来发现它可以使用特定功能。
__GNUC__
是什么意思?
它表明我不是GNU编译器,你可以使用GNU扩展。 [1]
什么是
__attribute__((unused))
?
此属性附加到变量,表示该变量可能未使用。 GCC不会为此变量生成未使用的变量警告。 [2]
__GNUC__
和_MSC_VER
之间的区别是什么?
它们是两个不相关的宏。第一个说我是GNU编译器,第二个说MS编译器的版本号。但是,MS编译器不支持GNU扩展。
如何使用GNU和MS可视化工作室检查操作系统是否正在编译我的python代码
#ifdef
?
#if (defined(__GNU__) && defined(_MSC_VER))
// ...
#endif
答案 1 :(得分:2)
不同的编译器支持不同的功能,有时以不同的方式。您正在找到一系列#ifdef
块,以根据构建代码的编译器启用支持;例如,GNU编译器会自动定义__GNUC__
。 __CC_ARM
,__ICCARM__
,__GNUC__
,__TASKING__
都是由项目移植到并感兴趣的某些编译器定义的。
__attribute__((unused))
条目是一个特定于GNU的指示符(尽管其他编译器现在也可能支持这个),表明它所附加的符号可能未被使用,因此编译器应警告您该条件。
关于如何使用这些ifdef来确定构建代码的编译器 - 以与在另一个用于构建C的项目中读取相同的方式执行它。这些不是python代码的因素。