C++ C++;关于英特尔PCM源代码#ifndef INTELPCM#U API#定义INTELPCM#U API#endif

C++ C++;关于英特尔PCM源代码#ifndef INTELPCM#U API#定义INTELPCM#U API#endif,c++,class,C++,Class,我正在读IntlePCM的源代码。 在cpucounters.h中,我对这些陈述感到困惑 #ifndef INTELPCM_API #define INTELPCM_API #endif class INTELPCM_API PCM { ... } INTELPCM_API的作用是什么? 这似乎是一个装饰类PCM,但我不明白这个和谷歌解决方案的关键字 非常感谢 Kerr您可以尝试查看用于构建此文件的Makefile。在编译命令行上定义该符号的值将具有在关键字“class”和“PCM”之间

我正在读IntlePCM的源代码。 在cpucounters.h中,我对这些陈述感到困惑

#ifndef INTELPCM_API
#define INTELPCM_API
#endif 

class INTELPCM_API PCM
{
 ...
}
INTELPCM_API的作用是什么? 这似乎是一个装饰类PCM,但我不明白这个和谷歌解决方案的关键字

非常感谢


Kerr

您可以尝试查看用于构建此文件的Makefile。在编译命令行上定义该符号的值将具有在关键字“class”和“PCM”之间“剪切和粘贴”该值的效果。如果你发现一些实际的价值被放在那里,它可能会对他们试图完成的事情有所帮助

作为通过Makefile的替代方法,您可以告诉编译器在预处理之后(编译之前)停止。例如,对于gcc,这是通过-E标志完成的,请尝试:

    gcc -E cpucounters.h > somefile.txt

somefile.txt的内容将包含C代码,但在预处理器完成它的神奇操作之后。这将显示实际传递给编译器的内容,并且可能更容易解码。

谢谢,@BarryGackle我尝试并得到了以下结果:
class-INTELPCM\u-API-PCM
->
class-PCM
。看起来INTELPCM_API实际上毫无意义。。。但当我尝试使用boost.python公开类PCM时,它确实受到了影响。