温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C/C++函数重复定义、头文件重复包含、互相包含问题

发布时间:2020-07-18 08:04:38 来源:网络 阅读:5012 作者:李昊华 栏目:编程语言


1、避免头文件重复包含


// test.h 此段宏的意思是如果定义了宏变量TEST_H_则不再定义它
#ifndef TEST_H_
#define TEST_H_
//头文件内容
#endif

或者

// test.h 告诉预编译器只包含一次
#pragma once


2、避免重复定义


  不要将函数定义放置在头文件里面,正确的做法是头文件放置函数声明,源文件放置函数定义。因为源文件是分别编译的,假如头文件放置了函数定义,包含该头文件的每一个源文件都会定义相应的函数,从而导致重复定义。但是几种情况可以例外:内联函数的定义、类的定义、const和static变量,以及模板类/函数要求头文件必须包含定义才可以模板化。


3、避免头文件互相包含和循环包含


  头文件互相包含会导致递归包含,头文件互相依赖的逻辑本身就是错误的而且无法实现,头文件循环包含同理(比如a.h包含b.h,b.h包含c.h,c.h包含a.h)。正确的做法是将头文件的依赖降到最小,尽量在源文件中包含头文件,头文件中尽量用前置声明(尽量使用指针和引用,相关定义放到源文件中 等)。前置声明的类是不完全类型,不完全类型只能以有限方式使用。不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI