当我尝试编译此程序时,程序错误中出现杂散的“#”

Posted

技术标签:

【中文标题】当我尝试编译此程序时,程序错误中出现杂散的“#”【英文标题】:I get stray '#' in program error when I try to compile this program 【发布时间】:2017-03-14 09:59:27 【问题描述】:

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

程序中的流浪#

下面是我的代码:

#include<omp.h> 
int main()

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

【问题讨论】:

【参考方案1】:

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

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

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

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

语法违反了约束,因此出现错误。你必须把它放在它的自己的行中。

【讨论】:

@JeremyP 对,让我明确一点。谢谢 我只提到它是因为我花了几分钟没有注意到它并思考“他在说什么,#include 没有错”:) @JeremyP 您非常正确地指出,先生,在某些情况下对某人来说可能很明显的事情可能会让其他人感到非常困惑。此外,明确说明几乎任何事情,特别是 SO 答案,都没有什么坏处。 :) 感谢您的评论和 cmets。 :)

以上是关于当我尝试编译此程序时,程序错误中出现杂散的“#”的主要内容,如果未能解决你的问题,请参考以下文章

g++ 错误:程序中出现杂散“\177”

为啥杂散的 </p> 结束标记会生成一个空段落?

与负数进行比较时,程序中出现杂散“\342”

(JOOQ)当我尝试编译项目时,Mysql 出现连接错误

为啥在尝试调用采用动态参数的基本构造函数/方法时会出现此编译错误?

memcpy() 给我段错误