编译错误:error: expected '=', ',', ';', 'asm' or '__attribute__' before...

我出现此问题的原因是 在两个函数之间声明了结构体。


今天用gcc 编译一个文件出现如下错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token

语句都快注释完了,编译还是通不过,最后检查include,才发现,原来是include漏了致命重要的”#“号!!

我写成如下形式了:

           include

           ......

浪费了两分钟。看来还是那句话,细心写代码更胜于快速写完再调试修改。

如果函数定义时,写成如下形式,也会给出同样的提示:

void printSpace(int n);       //注意这里应该是一个“{”,不小心或者只是习惯性地加一个“;”号

    int i=0;

    ....(你的函数内容)

}

百度了一下,这种错误的提示的提问者还不少,故写出来,以供参考

标签:  gcc,  错误:expected ‘=’,  ‘asm’ or ‘__attribute__’ before ‘<’ t

 因为将CRC校验代码加入时,我修改了Makefile文件;而且,修改Makefile文件我是将拷贝别的文件的依赖关系来进行修改的。由于我只修改了依赖文件(在这里也就是.c文件)的文件名,而没有修改目标文件(在这里也就是.o文件)的文件名。所以导致出现了上述的错误,将目标文件名修改下即可通过编译,而不会出现上述的错误。

        引申:以下的这些错误原因是网上看到的,整理一下

        1.原因:用gcc编译cpp文件。解决:用g++编译cpp文件

        注:用Makefile很容易误用gcc的,类似问题遇到过无数次……还有连接的时候也是,有些版本的make喜欢用gcc连接,直接挂掉。我通常都在头部加一句CC=g++  CFLAGS=-x c,感觉挺好用。

        2.原因:包含头文件时缺少“#”或者函数“{”与“}”没有成对的出现

        3.原因:新加的内容与头文件冲突

      注:error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘XXX’,如果XXX是类名,那么几乎可以肯定地说是你的C文件里包含了C++头文件。楼主遇到的正是这个问题。建议不要使用10楼的方法。最好的方法是,不要去包含c++头文件!如果你的C文件要用到类,干脆直接将C文件改成CPP文件得了。缺少标点符号和全半角的提示是不一样的。

        4.tyepdef int (*psum)(int,int);

        typedef拼写错误,如上,报的错误: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘int’


你可能感兴趣的:(工作常用)