【发布时间】:2020-06-15 14:58:42
【问题描述】:
我想将 pthread 的逻辑添加到我正在为 C 编写的小型分析库中。但是,如果 pthread 可用,我只想执行与 pthread 相关的逻辑。
是否有使用预处理器指令的编程方式来执行此操作?
我想它看起来像:
#ifdef pthread_h
#include <pthread.h>
#endif
. . .
#ifdef pthread_h
// pthread specific logic here
#endif
但我不确定并且不知道如何处理的部分是
#ifdef pthread_h
如果我还没有包含pthread.h,则pthread_h 不可用。对?
有没有办法只在头文件可用时才包含它?也许我可以通过这种方式实现我正在寻找的结果。
我想要的结果是在分析数据中包含有关当前线程 ID 的信息,但前提是库具有可用于调用 pthread_self() 的 pthread。
【问题讨论】:
-
Linked!=included。这是不同的东西。没有什么是链接编译时间。库是linked在编译后发生的链接期间,通常由名为linker的单独程序完成。 -
除了关于链接过程的错误措辞。为什么提供的示例不适合您?为什么以及因为什么你特别不确定?
-
提供的示例对我不起作用,因为我不知道如果在包含
pthread.h之前无法定义pthread_h会在哪里定义它。我是否可以尝试包含文件但如果找不到则失败?也许我可以根据可用的标头而不是可用的库来做到这一点。 -
@P__J__ 我已经修改了问题,希望该术语现在更有意义。我对 C 不是很熟悉,所以我在这里。
标签: c macros include c-preprocessor header-files