函数定义及其在C中的前向声明

时间:2014-09-06 15:22:29

标签: c forward-declaration

我目前正在实现基于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

0 个答案:

没有答案