error: expected declaration specifiers or '...' before xxx(xxx是函数形参)
Posted cyyljw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error: expected declaration specifiers or '...' before xxx(xxx是函数形参)相关的知识,希望对你有一定的参考价值。
在使用带参有返回值的函数指针做参数时,编译出现下面情况
……………………
error: expected declaration specifiers or ‘...‘ before ‘FunType‘
情形描述:
a.h:
typedef void (*FunType)();
void callFun(FunType p);
a.c :
#include "a.h"
FunType myfuntype=NULL;
void callFun(FunType p)
{
myfuntype=p;
}
b.c
#include "a.h"
MyFun()
{
.....;
}
callFun(MyFun);
函数指针变量FunTypevar 定义在 a.c 中,a.h声明 了 相应的typedef 和函数 .在b.c 想使用a.c中函数指针,于是在b.h中#include"a.h",最后出现了上面的编译错误。
原因分析:
网上搜索,讨论的不少,越看越茫然。
可能原因是
b.h中#include "a.h" 而a.h中的函数声明中用到了b.h中的结构体或者typedef,那么就会出现在包含a.h的时候b.h中的结构体或者typedef还没有声明,从而陷入错误.
解决办法:
将a.h 删除
a.c:
typedef void (*FunType)();
FunType myfuntype=NULL;
void callFun(FunType p)
{
myfuntype=p;
}
b.c
typedef void (*FunType)();
extern void callFun(FunType p);
MyFun()
{
.....;
}
callFun(MyFun);
当再次make 的时候,pass了
以上是关于error: expected declaration specifiers or '...' before xxx(xxx是函数形参)的主要内容,如果未能解决你的问题,请参考以下文章
laravel --报错:Parse error: syntax error, unexpected '}', expecting ';'
Syntax Error: Unexpected token, expected {
Syntax Error: SassError: Expected newline.错误解决
error: expected `;' before '' token这是啥错误
Parse error: syntax error, unexpected '__data' (T_STRING), expecting ',' or ')