这些是等价的吗?如果没有,哪些是相同的,哪些是不同的?
案例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询问声明的顺序是否重要。
答案 0 :(得分:2)
如果file1.c
中的某些内容使用file2.c
中的某些内容,那么案例1将(可能)失败而案例2成功。 (我说可能是因为我们不知道file1.c
中有什么。)
如果do something
使用file1.c
或file2.c
中的内容,则案例3将失败。
在案例4中,声明完全是多余的。 (在案例3中也是多余的,除非在声明和定义之间调用test
。)
答案 1 :(得分:2)
对于案例1,2和3,它取决于。 C预处理器只是将文件替换为包含它的位置。所以它在很大程度上取决于文件的内容。
对于情况4,只要被调用的函数写在调用函数之上就没关系。