我在 Ubuntu 14.04 上运行,并使用 gcc/g++ 进行编译和链接。 main 由大约 30 个文件和 20 个插件组成,由 main 调用。我用 -pthread
作为编译器选项,我做 #include <pthread.h>
.我的问题是:
- 仅将#include 放在main 中就足够了,还是我必须将它放在属于main 的所有文件中?我想插件的答案也是如此。
- 我是否必须将#include 放入所有插件主程序中并使用 -pthread 进行编译,即使它们不使用线程或者插件的调用已经是线程?
最佳答案
我会在这里走出去,假设当你说“插件”时,你实际上指的是“外部函数”,即在给定的 C 源文件中使用但未定义的函数。
当您从代码中调用任何外部函数时,至少需要有一个该函数的声明,以便编译器知道调用它的正确方法。头文件通常包含那些需要的声明。
例如,如果您想使用 strcpy
功能,你需要#include <string.h>
,因为该文件包含 strcpy
的声明.如果strcpy
没有在给定的 C 文件中的任何地方调用(也没有在 string.h
中声明的任何其他函数),那么您不需要 #include <string.h>
在该文件中。
同样适用于 pthread.h
, 你只需要在调用 pthread_create
时包含它或该 C 源文件中在该文件中声明的任何其他函数。
在链接时,如果链接在一起以创建可执行文件的任何源文件使用任何 pthread 函数,那么您需要传递 -pthread
创建可执行文件时。
关于c++ - 主线程和插件中的pthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34882347/