我目前正在实现基于C语言的前端。我很困惑如何处理函数的前向声明和函数定义的修饰符和属性(例如__attribute__((some_attribute))
)。我在C标准,GNU文档或Internet中找不到任何相关信息。我会欣赏任何类型的相关书籍,链接等。
我应该如何检查定义修饰符是否与声明冲突?例如:
int foo(int);
static int foo(int a) { return a; }
将导致:
error: static declaration of ‘foo’ follows non-static declaration
而下面的代码很好:
static int foo(int);
int foo(int a) { return a; }
我想我可以假设声明中的所有修饰符和属性都是由定义继承的。但是什么时候定义可以使用声明中没有的修饰符和属性?
如果在定义之前有多个声明,会发生什么? 什么声明符合定义?
提前致谢,
的Grzegorz