当我尝试编译这个程序时,我在程序错误中得到了'#'

时间:2017-03-14 09:59:27

标签: c parallel-processing openmp pragma preprocessor-directive

当我尝试使用-fopenmp标志进行编译时,出现以下错误:

  

程序中的迷路#

以下是我的代码:

#include<omp.h> 
int main()

{        #pragma omp parallel 
     {
     int id=0;
     printf("hello(%d) ",id);
     printf("world(%d)\n",id);
     }
}

1 个答案:

答案 0 :(得分:9)

引用C11,章节§6.10/ p2,“预处理指令”(强调我的

  

预处理指令由一系列满足以下条件的预处理令牌组成   以下约束:序列中的第一个标记是#预处理标记(at   翻译阶段4)的开始是源文件中的第一个字符(可选)   在不包含换行符的空格后或在空格后面   包含至少一个换行符。序列中的最后一个标记是第一个换行符   跟随序列中第一个标记的字符。

因此,您不能在任何其他令牌之后拥有#。在你的代码中

 int main()
 {        #pragma omp parallel
 ^        ^^^

语法违反了约束,因此错误。您必须将其放在自己的行中。