错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__

今天在向一段代码中添加CRC校验代码时,出现了如下的编译错误:

checking.c: 在函数‘get_int’中:
checking.c:16: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
checking.c:52: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
checking.c:67: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
checking.c:78: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
checking.c:97: 错误:原型函数定义中使用了旧式参数声明
checking.c:97: 错误:expected ‘{’ at end of input

 

是在学习c primer plus第八章的时候8.6 输入确认的时候提示的错误。

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

   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’。

 

所以最后通过检查发现,是少写了一个';'导致的。asm是编译器。

 

你可能感兴趣的:(c,bool类型)