什么是-D编译器标志C ++(clang,GNU,MSVC)

时间:2014-10-07 00:33:36

标签: c++ makefile clang gnu

好的,我假设-D前缀意味着#define后面跟着变量名,但是我找不到有关编译器标志的makefile功能的任何文档。

CXX=clang -DTHISISPREPROCESSORVARIABLE

因此,make进程中的-DTHISISPREPROCESSORVARIABLE将定义预处理程序变量THISISPREPROCESSORVARIABLE,并将跟随cout编译。

#ifdef THISISPREPROCESSORVARIABLE
     std::cout << "this should exist with the -D" << endl;
#endif

这是正确的假设吗?它似乎有效,只有任何人都可以确认-D指的是#define(任何人都可以链接到一些可以填写所有这些命令定义的makefile文档吗?)

1 个答案:

答案 0 :(得分:4)

GCCMSVC,和 Intel,都记录了这个标志,Clang默认使用GCC标志。我刚刚在Clang's help page waaaay at the bottom找到了它(对于windows的clang-cl),harmic发现它更清楚here用于linux。

  

执行clang-cl /?以查看支持的选项列表:
    /D <macro[=value]>定义宏

harmic注意到这些是编译器标志,并且与makefile没有任何关系,这就是为什么你无法在makefile文档中找到它。这些标志可以放在makefile中,它会将它们传递给编译器,但不是makefile的一部分。