通常定义系统相关符号在哪里?

时间:2011-06-15 12:38:00

标签: c symbols system-dependent

我正在查看Tor的源代码作为RA项目的一部分。我试图找出为什么它被自动编译为在一个系统(SuSE)上使用线程并在另一个系统(Solaris)上分叉新进程。源代码中只有少数位置调用fork(),并且它依赖于定义的各种符号(如ENABLE_THREADING或USE_PTHREADS)。我搜索过文件,但无法找到大多数所需符号的定义。

我并不是特意寻找这个问题的解决方案,而是更多的一般准则。如何定义与系统相关的编译相关的符号?

2 个答案:

答案 0 :(得分:1)

老实说,我不知道,但这是我的猜测

这些是,它们在Makefile中定义。通常,Makefile是由某种./configure脚本动态生成的。

请注意,在C和C ++中,通常的做法是使所有宏都使用大写字符和下划线,以便它们更明显地是宏。这当然只是惯例,而不是必需的。

最后,grep可以成为你的朋友。在源目录中尝试这样的事情:

grep -R "ENABLE_THREADING" *

这将找到使用或定义该宏的所有文件。

答案 1 :(得分:0)

这些是在使用autotools的构建的configure部分生成的。