多文件编译中避免多次include同一个文件

file 1

以下是header file——pr_exit.h

#ifndef _PR_EXIT_H
#define _PR_EXIT_H
include<pr_exit.c>
void pr_exit(int status);
#endif


file2

以下是c source file——pr_exit.c

#include"sys/wait.h"
void pr_exit(int status)
{
 //具体的pr_exit函数实现
}


file3

main函数

#include"pr_exit.h"
#include"myerr.h"
int main
{
 //具体的程序代码
}

这里就有典型的重定义问题

多文件编译中避免多次include同一个文件



问题在于file2里面include了file3,而include3里面有了void pr_exit(int status); 此时file2和file3就有两个void pr_exit(int status); 

#include发生在预编译时期,此时file2和file3合并起来,同一个文件内不允许两次定义同一个函数(即不能出现重定义)

去掉file2的include<pr_exit.c>重新编译source file,即可通过编译,排除由include引起的重定义问题。


headerfile里面是写入函数的声明或者结构体的定义之类的,而不应该是具体的函数实现。

多文件编译中避免多次include同一个文件

上一篇:内部排序算法合集(快排、归并、插排、堆排)


下一篇:Flex中通过RadioButton进行切换