当我尝试使用-fopenmp
标志进行编译时,出现以下错误:
程序中的迷路
#
以下是我的代码:
#include<omp.h>
int main()
{ #pragma omp parallel
{
int id=0;
printf("hello(%d) ",id);
printf("world(%d)\n",id);
}
}
答案 0 :(得分:9)
引用C11
,章节§6.10/ p2,“预处理指令”(强调我的)
预处理指令由一系列满足以下条件的预处理令牌组成 以下约束:序列中的第一个标记是
#
预处理标记(at 翻译阶段4)的开始是源文件中的第一个字符(可选) 在不包含换行符的空格后或在空格后面 包含至少一个换行符。序列中的最后一个标记是第一个换行符 跟随序列中第一个标记的字符。
因此,您不能在任何其他令牌之后拥有#
。在你的代码中
int main()
{ #pragma omp parallel
^ ^^^
语法违反了约束,因此错误。您必须将其放在自己的行中。