包含和声明的顺序在C中是否重要?

时间:2014-02-12 17:42:40

标签: c

这些是等价的吗?如果没有,哪些是相同的,哪些是不同的?

案例1

#include "file1.c"
#include "file2.c"

int test(int i); /* declaration */

int test(int i) {
    /* do something */
}

案例2

#include "file2.c" 
#include "file1.c"

int test(int i); /* declaration */

int test(int i) {
    /* do something */
}

案例3

int test(int i); /* declaration */

int test(int i) {
    /* do something */
}

#include "file1.c"
#include "file2.c"

案例4

#include "file1.c"
#include "file2.c"

int test(int i) {
    /* do something */
}

int test(int i); /* declaration */

案例1和2询问订单是否包含彼此的事项。案例3询问是否包括具有非包含代码的事项的顺序。案例4询问声明的顺序是否重要。

2 个答案:

答案 0 :(得分:2)

如果file1.c中的某些内容使用file2.c中的某些内容,那么案例1将(可能)失败而案例2成功。 (我说可能是因为我们不知道file1.c中有什么。)

如果do something使用file1.cfile2.c中的内容,则案例3将失败。

在案例4中,声明完全是多余的。 (在案例3中也是多余的,除非在声明和定义之间调用test。)

答案 1 :(得分:2)

对于案例1,2和3,它取决于。 C预处理器只是将文件替换为包含它的位置。所以它在很大程度上取决于文件的内容。

对于情况4,只要被调用的函数写在调用函数之上就没关系。