//#define static /*empty*/
int main()
{
static int a();
return a();
}
static int a() { return 0; }
如果我删除(#define static /*empty*/
)静态关键字,但是静态,它会断开:error: static declaration of ‘a’ follows non-static declaration
(gcc) )。
这种行为的原因是什么?
答案 0 :(得分:1)
使用static
关键字在另一个函数内声明函数是无效的(并且没有意义)。 C标准明确禁止这样做:
声明具有块范围的函数的标识符 应该没有extern之外的显式存储类说明符。