两个文件相互嵌套使用ifdef。endlf,产生的函数未定义问题

C语言 码拜 5年前 (2016-04-25) 728次浏览
本人想在main.cpp里调用regi-sign.cpp里面的函数,也想在regi-sign.cpp调用main.cpp里面的结构体
这样的话两个文件就会出现两个互相包含的include 这样会出现嵌套太深
本人用了ifdef …….endlf 这个,这样可以解决嵌套太深的问题,但是这样就出现了新的问题
main.cpp里面就出现egist和signin函数没有定义。求高手解决
这里是main.cpp 的头文件:
#include<stdio.h>
#define N 100
#ifdef INCLUDE_LEVEL_LIMI
#define INCLUDE_LEVEL_LIMIT 10
#include “regi-sign.cpp”
#endif
struct coust{
char count[20];
char password[20];
};
extern struct coust person[N],*perso,*coun,*pass;
int main()
{
int i,order;
scanf(“%d”,&order);
switch(order)
{
case 1:regist(person,fp);
case 2:Signin(person,fp);
case 0: return 0;
default :printf(“输入错误!”);
}
return 0;
}
这里是regi-sign.cpp:
#include “main.cpp”
extern “C” void regist(struct coust *person ,FILE *fp)
{
}
extern “C” void Signin(struct coust *person,FILE *fp)
{
}
解决方案

5

为什么不把声明放在头文件中,都include头文件

10

函数声明放在头文件里,函数实现放在源文件里,这样就只用包含头文件了
CPP文件本身就会参与编译,所以不要去包含

25

加一个regi-sign.h文件,把regi-sign.cpp中的函数和变量在regi-sign.h中声明下,在main。cpp中包含regi-sign.h文件
使用mian里面的结构体,在main.cpp中extern struct coust person[N],*perso,*coun,*pass;
regi-sign.h中struct coust person[N],*perso,*coun,*pass;定义就行了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明两个文件相互嵌套使用ifdef。endlf,产生的函数未定义问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)