Dan*_*ell 6 c pthreads pthread-barriers windows-subsystem-for-linux
我正在尝试用 C 并行化一个算法。我想使用pthread_barrier_t,但我的 Ubuntu wsl 由于某种原因找不到它。我已经pthread.h包含了并且可以使用其余的 pthread 函数。libthread.a已安装。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
/* Error occurs here */
pthread_barrier_t barrier;
Run Code Online (Sandbox Code Playgroud)
确切的错误是:“标识符 pthread_barrier_t 未定义”
我在其他地方看到这可能是我编译的方式。
编译如下:
gcc -o test test.c -Wall -std=c99 -lpthread -lm
Run Code Online (Sandbox Code Playgroud)
另外,VS Code 无法识别该函数。
问题在于你的-std=c99选择。使用严格的 C 模式会禁用很多东西,包括阻止pthread_barrier_t定义的东西。如果你使用-std=gnu99它,它应该可以编译。(在 WSL 上的 Ubuntu 16.04 上测试)。
或者,添加
#define _XOPEN_SOURCE 600 /* Or higher */
Run Code Online (Sandbox Code Playgroud)
或者
#define _POSIX_C_SOURCE 200112L /* Or higher */
Run Code Online (Sandbox Code Playgroud)
#include在源中的第一个之前。请参阅man 7 feature_test_macros参考资料 获取这些宏的可接受值和更多信息。
| 归档时间: |
|
| 查看次数: |
8128 次 |
| 最近记录: |