当我尝试编译这个程序时,出现了程序错误中的杂乱的 '#'。

3
当我尝试使用-fopenmp标志进行编译时,我遇到了以下错误:

程序中出现了流浪的#

下面是我的代码:
#include<omp.h> 
int main()

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

9
引用C11章节§6.10/p2“预处理指令”(我加粗的部分),“预处理指令包括一系列满足以下限制条件的预处理标记:序列中的第一个标记是一个预处理标记#,在翻译阶段4的开始时,它要么是源文件中的第一个字符(可以是在不包含换行符的空格之后),要么是跟随至少包含一个换行符的空格。序列中的最后一个标记是跟随序列中第一个标记的第一个换行符。”因此,在代码中您不能在任何其他标记后使用#。
 int main()
 {        #pragma omp parallel
 ^        ^^^

语法违反了限制,因此出现错误。您需要将其放在自己的行中。

@JeremyP 好的,让我明确一下。谢谢。 - Sourav Ghosh
1
我之所以提到这一点,是因为我花了几分钟没有注意到它,认为“#include”没有任何问题 :) - JeremyP
1
@JeremyP 先生,您指出的非常正确,对于某些情况下可能显而易见的事情,对于其他人可能会非常困惑。此外,在几乎任何情况下都明确说明一切都是有好处的,特别是在SO答案中。 :) 感谢您的审查和评论。 :) - Sourav Ghosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接