ToB企服应用市场:ToB评测及商务社交产业平台

标题: c++中头文件包含内容以及为何不可重复包含头文件 [打印本页]

作者: 王海鱼    时间: 6 天前
标题: c++中头文件包含内容以及为何不可重复包含头文件
C++的头文件(通常以.h或.hpp为扩展名)一般包含以下内容:
头文件的主要作用是声明接口,使多个源文件可以共享代码。在头文件中通常不包含函数的具体实现(模板和内联函数除外),以克制链接时的重复定义错误。
在C++中,函数的重复声明通常不会有问题,编译器允许对同一函数进行多次声明。但是,重复定义函数(即提供函数的实现)是不允许的。
以下是一些在C++中不能重复声明或定义的情况:
为什么必要包含掩护(Include Guard)
当一个头文件被多个源文件包含,或者在同一个源文件中被间接多次包含时,假如没有包含掩护,以上提到的实体大概会被重复定义或声明,导致编译错误或链接错误。利用包含掩护可以确保头文件的内容在同一个翻译单元中只被处理一次,克制重复定义和声明的问题。
示例
假设有一个头文件myheader.h:
  1. // myheader.h
  2. struct MyStruct {
  3.     int data;
  4. };
复制代码
假如在源文件中多次包含myheader.h,而没有包含掩护:
  1. #include "myheader.h"
  2. #include "myheader.h" // 重复包含
  3. int main() {
  4.     MyStruct obj;
  5.     return 0;
  6. }
复制代码
编译时会报错,提示MyStruct重复定义。添加包含掩护可以解决这个问题:
  1. // myheader.h
  2. #ifndef MYHEADER_H
  3. #define MYHEADER_H
  4. struct MyStruct {
  5.     int data;
  6. };
  7. #endif // MYHEADER_H
复制代码
总结

通过明白这些规则,可以编写更结实的C++代码,克制因重复定义导致的编译和链接错误。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4