最近在编写一个多文件结构的程序,在linux下,通过makefile文件来进行gcc编译,确实感觉到了makfile的强大和其在多文件编译的优势,在进行多文件编译的时候遇到了一个问题:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token 或者 before ‘{’ token
自己建立了两个源文件:main.c、mainfunction.c 和一个头文件:func_head.h 出现如下错误:
cc -c -o main.o main.c main.c: In function 'function'; main.c:15:error:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
通过程序的不断查找和注释检查,才发现错误在头文件中的语句:
void function(double *pp,double *p)
没有在上述的语句最后写“;”所以相当于再main.c文件中:“#include “funct_head.h”语句有问题不完整的。有时候也在include <stdio.h>这样的语句中由于“<”没有也造成同样的问题。
看来细心写代码更胜于快速写完再调试修改。
如果函数定义时,写成如下形式,也会给出同样的提示:
void printSpace(int n); //注意这里应该是一个“{”,不小心或者只是习惯性地加一个“;”号 int i=0; ....(function) }
i有时候也有:ncompatible implicit declaration of built-in function 'printf'
原因是缺少头文件#include <stdio.h>。