C++ 头文件(十五)--定义成员属性、引用、避免多次包含

本文详细介绍了C++中头文件的使用方式及其中常见的元素,包括宏定义、函数原型、内联函数、结构体声明、模板函数等,并通过具体代码示例展示了如何正确地在多个文件间引用这些元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//  MyFirst.hpp
//if not define 第一次引用头文件,如果没有定义宏,则进入#ifndef 和 #endif中间的语句
#ifndef MyFirst_hpp
#define MyFirst_hpp

#include <stdio.h>

//(一)头文件常包含的内容
/*
 1.函数原型
 2.#define const 的符号常量
 3.内联函数 inline
 4.结构声明
 5.类声明
 6.模板声明
 7.全局变量声明  extern 为声明变量,没有初始化,需要在cpp文件进行初始化才能被其它文件引用
 8.静态变量  static
 */

//(1)
void mfunsion();

//(2)
#define k_num 10
const int consta = 20;

//(3)
inline unsigned line(unsigned x) {return x*x;}

//(4)
struct mstruct {
    double d;
    char c[10];
    int i;
};

//(5)


//(6)
template <typename T>
void mtemplate(T &a,T &b) {
    auto c = a;
    a = b;
    b = c;
}

template <typename T>
void mtemplate2(T &a,T &b){
    
    
}


//(7)
extern int inta;
extern int ninta;


//(8)
static int statica = 20;

#endif

//  MyFirst.cpp
#include "MyFirst.hpp"
#include <iostream>


//(7)
int inta = 100;
int ninta = 9999;

//  main.cpp
#include <iostream>
#include "MyFirst.hpp"
//#include "MyFirst.cpp"
using namespace std;
int tt;
int main(int argc, const char * argv[]) {
    
    int d = 10;
    int c = 20;
    int & a = d;
    int & k = c;
    
    //引用头文件函数模板
    mtemplate2(a, k);
    d = consta;
    
    
    //(7)extern 引用头文件全局变量
    inta = 10;
    statica = 300;  //静态变量

    //(7)extern int ninta;  可以不再次声明,作用域尝试寻找当前往上的相同名字变量,如果不存在就引用 MyFirst的变量
    cout << &ninta << endl;
    
    int ninta; //这里等于重新定义一个全新的同名变量,与MyFirst的变量是不同的两个变量分别在两个内存中
    cout << &ninta << endl;
    ninta = 222;


    
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值