未知类型名称 "pthread_barrier_t"
unknown type name "pthread_barrier_t"
我正在尝试在 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;
准确的错误是:"identifier pthread_barrier_t is undefined"
我在别处看到它可能是我正在编译的方式。
编译如下:
gcc -o test test.c -Wall -std=c99 -lpthread -lm
此外,VS Code 无法识别函数。
问题出在您的 -std=c99
选项上。使用严格的 C 模式会禁用一堆东西,包括阻止 pthread_barrier_t
被定义的东西。如果您改用 -std=gnu99
,它应该可以编译。 (在 WSL 的 Ubuntu 16.04 上测试)。
或者,添加
#define _XOPEN_SOURCE 600 /* Or higher */
或
#define _POSIX_C_SOURCE 200112L /* Or higher */
在 源中的第一个 #include
之前。有关这些宏的可接受值和更多信息,请参阅 man 7 feature_test_macros
。
我正在尝试在 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;
准确的错误是:"identifier pthread_barrier_t is undefined"
我在别处看到它可能是我正在编译的方式。
编译如下:
gcc -o test test.c -Wall -std=c99 -lpthread -lm
此外,VS Code 无法识别函数。
问题出在您的 -std=c99
选项上。使用严格的 C 模式会禁用一堆东西,包括阻止 pthread_barrier_t
被定义的东西。如果您改用 -std=gnu99
,它应该可以编译。 (在 WSL 的 Ubuntu 16.04 上测试)。
或者,添加
#define _XOPEN_SOURCE 600 /* Or higher */
或
#define _POSIX_C_SOURCE 200112L /* Or higher */
在 源中的第一个 #include
之前。有关这些宏的可接受值和更多信息,请参阅 man 7 feature_test_macros
。