c++ - 主线程和插件中的pthread?

标签 c++ c plugins pthreads

我在 Ubuntu 14.04 上运行,并使用 gcc/g++ 进行编译和链接。 main 由大约 30 个文件和 20 个插件组成,由 main 调用。我用 -pthread作为编译器选项,我做 #include <pthread.h> .我的问题是:

  1. 仅将#include 放在main 中就足够了,还是我必须将它放在属于main 的所有文件中?我想插件的答案也是如此。
  2. 我是否必须将#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/

相关文章:

grails - 使用Grails安全性插件时出错

c++ - 在 OSX 上从 x86 读取共享内存到 x64,反之亦然

c++ - 将十六进制 char 值转换为其字符串文字以在 sstream 上使用

plugins - 仅在maven-war-plugin中复制修改的文件

ubuntu - 使用 jmeter 插件进行 Nagios 测试失败,出现 CRITICAL : . .. java.util.prefs.FileSystemPreferences$1 run

c - 解析已解析的字符串

c++ - 如何基于函数参数C++更改对象属性

c++ - 编译我的第一个 C++ 程序时遇到问题

c - 如何在 makefile 中包含 *.so 文件

c - 修改捕获的pcap并写回