头文件ifndef用法及意义#pragma once

简介: 头文件ifndef用法及意义#pragma once

头文件定义

所有头文件都应该使用 #ifndef来防止头文件被多重包含, 举个例子

写三个文件,main.c head1.h head2.h

main.c

#include <iostream>
#include "head1.h"
#include "head2.h"
using namespace std;
int main(){
  cout << "Hello World!\n";
  return 0;
}

head1.h

#ifndef HEAD1_H_
#define HEAD1_H_
int i;
#endif // !HEAD_H_

head2.h

#include "head1.h"

运行程序是没有问题的

假如我们将head1.h中的条件定义删掉,就只留下一个变量的声明

head1.h

int i;

执行程序会导致重定义错误

因为我们head2.h包含了#include这个head1.h的头文件,预编译的时候会重复编译这个头文件的内容,因此会导致重定义

HEAD1_H_的命名规则

按照谷歌的代码规范

我们可以将文件路径也加上,其中的’_‘符号没有任何语法意义,加上表示头文件的’.‘符号或者‘/’符号。因为“.”不能作为标识中的字符。

某些资料也说系统自带的头文件会前后各加两个下划线__,用户自己编写的头文件可以不用双下划线__,以表示与系统头文件的区别。看自己习惯。

#pragma once

#pragma once和这种宏实现方式一样,平时使用并没有什么区别

因此我们

head1.h

#pragma once
int i;

这么写,我们的程序也是没有问题的。

区别:#ifndef是依赖于我们定义的宏名字不能冲突(如果我们不小心宏名字定义冲突了,over)

#progma once依赖于编译器,同一个文件不会被包含多次(较老的编译器可能会报错)

目录
相关文章
|
编译器 程序员 C++
C头文件
C头文件。
35 0
|
编译器 程序员 C++
C 头文件
C 头文件。
28 0
|
6月前
|
编译器 程序员 C++
头文件
头文件。
37 2
|
6月前
|
编译器 程序员 C++
[C++] #ifndef和#define与#pragma once在头文件中的作用和关系
[C++] #ifndef和#define与#pragma once在头文件中的作用和关系
91 0
|
编译器 C语言
宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用
宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用
105 0
|
C++
c++ 常用头文件
c++ 常用头文件
187 0
条件编译 #if #endif #if #elif #else #endif #ifdef #if define 的使用方法 引头文件#include<> 和#include““的区别
条件编译 #if #endif #if #elif #else #endif #ifdef #if define 的使用方法 引头文件#include<> 和#include““的区别
131 0
#pragma的一些用法
1、#pragma message message 参数:Message参数能够在编译信息输出窗口输出相应的信息,这对于源代码的信息控制特别重要,其使用方法为: #pragma message("消息文本") 当我们程序中定义了许多宏来控制源代码版本的时候,我们自己都有可能会忘记有没有正确设置...
1114 0