C++关于Intel PCM源代码#ifndef INTELPCM_API #define INTELPCM_API #endif

Posted

技术标签:

【中文标题】C++关于Intel PCM源代码#ifndef INTELPCM_API #define INTELPCM_API #endif【英文标题】:C++ about Intel PCM source code #ifndef INTELPCM_API #define INTELPCM_API #endif 【发布时间】:2015-05-10 06:26:50 【问题描述】:

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

#ifndef INTELPCM_API
#define INTELPCM_API
#endif 

class INTELPCM_API PCM

 ...

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

非常感谢!

可儿

【问题讨论】:

【参考方案1】:

您可以尝试查看用于构建它的 Makefile。在编译命令行上定义该符号的值将具有在关键字“class”和“PCM”之间“剪切和粘贴”该值的效果。如果您要找到一些实际价值,那么它可能会为他们试图完成的工作提供一些线索。

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

    gcc -E cpucounters.h > somefile.txt

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

【讨论】:

谢谢,@BarryGackle 我试过了:class INTELPCM_API PCM->class PCM。似乎 INTELPCM_API 实际上没有任何意义......但是当我尝试使用 boost.python 公开类 PCM 时,它确实受到了影响。

以上是关于C++关于Intel PCM源代码#ifndef INTELPCM_API #define INTELPCM_API #endif的主要内容,如果未能解决你的问题,请参考以下文章

关于一些小的c++技巧

Intel/AMD C++ 上的 OpenGL 3+ 失败

关于C++的一个LINK错误

关于头文件

为啥在 C++ 头文件中使用 #ifndef 和 #define?

C++ 在 Linux 中录制 PCM 流