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

标签 c symbols system-dependent

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

我并不是专门寻找这个问题的解决方案,而是寻找一个一般准则。与系统相关编译相关的符号是如何定义的以及在哪里定义的?

最佳答案

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

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

请注意,在 C 和 C++ 中,常见的约定是将所有宏都设为大写字符和下划线,以便更明显地表明它们是宏。这当然只是约定,并不是必需的。

最后,grep 可以成为你的 friend 。在源目录中尝试类似的操作:

grep -R "ENABLE_THREADING" *

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

关于c - 系统相关符号通常在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357765/

相关文章:

testing - 从开发机器运行与安装时,是什么导致 VB6 应用程序测试结果不同?

c++ - 将 unsigned int 添加到 unsigned int*

c - 我不知道为什么 else if 语句没有发生

lisp - 在 lisp 中排序混合数据类型列表

symbols - 在运行时动态修改符号表(C语言)

c - 为什么数组值与指定值不同 C 程序

c - 检测到堆栈崩溃。有人可以解释为什么吗?

java - 如何在 java 中将字体识别为符号字体?

linux - systemd 能否自动重启/停止依赖服务?