gcc的-DLINUX标志是什么?

3

我曾经看到过一些Makefile文件使用了-DLINUX标志,但找不到任何关于它的文档。是否有可以查找比正式发布的手册更更新的工具(例如‘gcc’)信息的地方?


可能值得一提的是,这没什么特别的。你可能会看到像-DDEBUG-DNDEBUG这样的东西。 - user1508519
错误,没有手册可用吗? - trojanfoe
谢谢大家的回答。Trojanfoe,我犯了一个愚蠢的错误,没有想到-DLINUX是更简单的-D的自定义版本,并一直在手册中搜索“DLINUX”。我想给每个人的答案点赞,但是我的声望还不够。 - A1A2A3A4
4个回答

4

它只是为C预处理器定义了LINUX符号。

可能有些代码片段看起来像:

#ifdef LINUX
    //Linux-specific code
#elif defined WINDOWS
    //Windows-specific code
#endif

有疑问;必须定义 LINUX(可以是任何值),并且必须将 WINDOWS 定义为非零值。 - trojanfoe

2

1
根据 man gcc 的说明:
   -D name
       Predefine name as a macro, with definition 1.

因此,它允许从编译命令行中定义一个常量。

0

它定义了一个名为LINUX的预处理器宏。就是这样。宏本身,LINUX,并不是预定义的,它可能用于跨平台代码库,其中特定的代码段被启用为Linux目标。为此,实际上可以重新使用预定义的linux__linux__(请参见gcc -dP -E - < /dev/null的输出以获取系统上的所有预定义宏)。

请参阅http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/以获取有关gcc的标准文档(显然是针对GCC 4.8.2)。据我所知,如果此文档尚未安装(或已过时),那么这是查找最佳位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接