c++踩坑大法好 宏定义 头文件

1,c++宏定义是干啥的?防止重复引用,如何防止重复引用?

//a.h
//声明一个类,和其他声明
#include <iostream>
class A{
    public:
        static int a;
        static int b;
};

//b.h
//需要a.h的类,又还有些其他声明
#include "a.h"

//main,cpp
//既需要a.h,又需要b.h,所以只能把两个头文件都引用过来。

#include "a.h"
#include "b.h"

//报错,此处重复定义了,因为一共引用了3个文件:
//1,a.h
//2,b.h
//3,a.h(b.h中引用的)
int main{
    xxx一堆代码
}

怎样修改才对?

//a.h
#ifndef hehe
#define hehe
#include <iostream>
class A{
    public:
        static int a;
        static int b;
};
#endif
//这样当第一次引入a.h的时候会声明class并且定义一个hehe变量,第二次走到
a.h的时候发现已经有了hehe了,就不会再重新声明hehe了

2,头文件里能写什么样的声明?

①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

②变量声明:用于向程序表明变量的类型和名字。

③定义也是声明:当定义变量时我们声明了它的类型和名字。

④extern关键字:通过使用extern关键字声明变量名而不定义它。

所以,h文件中原则上只能写类声明,函数声明,静态全局变量(const这种),外部变量(extern这种)

原文链接: https://www.cnblogs.com/0-lingdu/p/12201849.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++踩坑大法好 宏定义 头文件

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/324337

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午1:22
下一篇 2023年3月1日 下午1:24

相关推荐