C语言 .h之间参数的调用

本文探讨了C语言头文件(.h)之间的参数调用问题,指出在头文件中应避免相互直接或间接引用可能导致错误的情况。例如,c.h正确引用了a.h并使用其参数,而d.h因b.h间接引用d.h自身导致错误。预防措施包括避免在被引用的头文件中包含可能导致循环引用的其他头文件。
摘要由CSDN通过智能技术生成

C语言 .h之间参数相互调用

这看似是个简单的问题,但也很容易产生知识误区。

1. 举例新建几个.h 文件

a.h
	#ifndef _A_H_
	#define _A_H_
		//头文件内容。
  		 typedef   struct {
		int len;
	}str_A;
	#endif
	b.h
	#ifndef _B_H_
	#define _B_H_
		#include "e.h"        //参数的.h里 调用其e.h时注意不能直接或间接调用d.h 否则d.h会报参数错误
		//头文件内容。
  		 typedef   struct {
		int len;
	}str_B;
	#endif
c.h
 	 #ifndef _C_H_
	#define _C_H_
		#include "a.h"     // a.h没有直接或间接调用c.h 所以可以引用str_A 参数
		//头文件内容。
   	 int func(str_A  str_a); //**不会报参数引用错误**
	#endif

d.h
      	#ifndef _D_H_
		#define _D_H_
		#include "b.h"       //
		//头文件内容。
		int funestr_B str_b); //**会报错误:**因为b.h里简介调用了d.h
		#endif
e.h
	#ifndef _E_H_
	#define _E_H_
	 	#include "d.h" 
		//头文件内容。
	#endif
  1. #ifndef A_H#define _A_H_作用
    一个头文件被引用两次,编译器会处理两次头文件的内容,会 产生错误。这样可以避免重复包含。

3. .h之间的参数相互调用

c.h调用a.h的参数是正确的
因为c.h编译 int func(str_A str_a)时会先编译 #include “a.h”

d.h调用b.h的参数可能会出错
因为b.h通过调用e.h 间接调用了d.h 因此预编译时 d.h调用b.h的参数会报错

所以 .h之间参数相互调用时注意:
被调用的参数的a.h被其他函数调用时
a.h里尽量不要有其他.h函数,因为其他的.h函数很有可能会调用此.h,导致此.h调用参数时导致找不到参数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值