【发布时间】:2015-05-10 06:26:50
【问题描述】:
我正在阅读 IntlePCM 源代码。 在 cpucounters.h 中,我对这些陈述感到困惑。
#ifndef INTELPCM_API
#define INTELPCM_API
#endif
class INTELPCM_API PCM
{
...
}
INTELPCM_API 的作用是什么? 它似乎是 PCM 类的装饰,但我不明白这个和谷歌解决方案的关键字。
非常感谢!
可儿
【问题讨论】:
我正在阅读 IntlePCM 源代码。 在 cpucounters.h 中,我对这些陈述感到困惑。
#ifndef INTELPCM_API
#define INTELPCM_API
#endif
class INTELPCM_API PCM
{
...
}
INTELPCM_API 的作用是什么? 它似乎是 PCM 类的装饰,但我不明白这个和谷歌解决方案的关键字。
非常感谢!
可儿
【问题讨论】:
您可以尝试查看用于构建它的 Makefile。在编译命令行上定义该符号的值将具有在关键字“class”和“PCM”之间“剪切和粘贴”该值的效果。如果您要找到一些实际价值,那么它可能会为他们试图完成的工作提供一些线索。
作为通过 Makefile 的替代方法,您可以告诉编译器在预处理后(编译前)停止。以 gcc 为例,这是通过 -E 标志完成的,尝试:
gcc -E cpucounters.h > somefile.txt
somefile.txt 的内容将包含 C 代码,但在预处理器完成其魔法之后。这将显示实际传递给编译器的内容,并且可能更容易解码。
【讨论】:
class INTELPCM_API PCM->class PCM。似乎 INTELPCM_API 实际上没有任何意义......但是当我尝试使用 boost.python 公开类 PCM 时,它确实受到了影响。