zoukankan      html  css  js  c++  java
  • 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这种)

  • 相关阅读:
    git和github的使用
    C语言 -- 链表操作
    数据结构之表达式求值(C++版)
    数据结构之一元多项式加法(C++版)
    数据结构之邻接矩阵(C++版)
    数据结构之二叉树,赫夫曼树(C++版)
    数据结构之循环队列(C++版)
    数据结构之顺序栈(C++版)
    数据结构之单链表(C++版)
    数据结构之顺序表(C++版)
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/12201849.html
Copyright © 2011-2022 走看看