博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译错误:error: expected '=', ',', ';', 'asm' or '__attribute__' before...
阅读量:4166 次
发布时间:2019-05-26

本文共 1077 字,大约阅读时间需要 3 分钟。

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

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

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

我写成如下形式了:

           include <stdio.h>

           ......

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

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

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

    int i=0;

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

}

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

标签:  ,  , 

 因为将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’

转载地址:http://dwexi.baihongyu.com/

你可能感兴趣的文章
Java的位运算符
查看>>
BufferedReader与Scanner的区别
查看>>
java String于常量池中的介绍
查看>>
java Text 错误: 找不到或无法加载主类 Text
查看>>
XShell连接ubantu:给ubantu安装ssh
查看>>
c语言的null和0
查看>>
二进制详解:世界上有10种人,一种懂二进制,一种不懂。
查看>>
c语言一个字符变量存储多个字符
查看>>
java接口中方法的默认访问修饰符为public
查看>>
java多线程之并发synchronized
查看>>
java多线程之并发Lock
查看>>
微信公众平台基础配置
查看>>
jpa 和 hibernate 的联系
查看>>
SpringBoot之@SpringBootApplication注解
查看>>
ajax 传JSON 写法
查看>>
SpringBoot之web发展史
查看>>
SpringBoot之开发web页面
查看>>
SpringBoot之快速部署
查看>>
springBoot之jar包在后台(运行:编写start、stop脚本)
查看>>
redis学习
查看>>