文章标题

来源:互联网 发布:javascript 定义数组 编辑:程序博客网 时间:2024/06/04 17:52

为了避免被重复定义的方式有两种,一种是比较通用的方式(方式一),另外一种是只有某些新的编译器有的方式(方式二)

1 //方式一:
2 #ifndef MYFILE_H
3 #define MYFILE_H
4 … … // 声明、定义语句
5 #endif
6
7 //方式二:
8 #pragma once
9 … … // 声明、定义语句

ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况

ifndef 可以保证同一个文件名不会被引用多次,而且保证不能有相同名的文件,

Pragma 需要根据编译器的可用性来使用,他可以保证一个文件不会被多次引用,而且它是根据物理地址来找文件的,这样就可以让头文件重名了,这样都可以,但是个人觉得还是不要重名,这样会搞混的。

个人建议是尽量是用#ifndef 这种方式,这样可以兼容任何编译器,而且可以保证不会有名字相同的文件,虽然使用起来多敲了几个代码,,但是根据编译器的不同也可以使用#pragma的这样使用更方便,个人建议文件名都不要重名。

0 0
原创粉丝点击