WebKit有很多这样的预处理器行:
#if MACRO1(MACRO2)
例如:
#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
#include "MediaPlayerPrivateQTKit.h"
#if USE(AVFOUNDATION)
#include "MediaPlayerPrivateAVFoundationObjC.h"
#endif
...
Run Code Online (Sandbox Code Playgroud)
所以我的第一个想法是它们是类似函数的宏,但我看不出它是如何工作的,我在源代码中的任何地方都找不到这些宏的#defines.
我问另一位工程师它是什么,他从来没有见过像#if之前那样使用的多个宏.我发现这个维基页面谈论了它们,但我仍然不清楚它们来自哪里,
那么我的问题是:这是有效的C++还是在代码中被其他工具/语言(如CMake或其他东西)替换,如果它是有效的C++是否有人知道有关此问题的说明?
我是一个不处理这种语法的C++静态分析工具的支持工程师.一位客户要求我们处理它,但如果我要把它带给高级工程师,我不想听起来像个白痴:)所以如果有人知道的话,我会喜欢这个细节.