1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C/C++ 头文件 #pragma once vs #ifndef

C/C++ 头文件 #pragma once vs #ifndef

时间:2022-09-12 09:40:05

相关推荐

C/C++ 头文件 #pragma once vs #ifndef

C/C++ 头文件防止被重复包含有2种常用的做法,一种是传统的ifndef

#ifndef HEADER_H#define HEADER_H...#endif // HEADER_H

另一种是稍微新一些的pragma once:

#pragma once...

远古gcc版本不支持pragma once–gcc 3.4之前的版本不支持pragma once,也就是前的gcc,现在应该没人用这么古老的编译器吧。

我找到2个问答:

c++ - #pragma once vs include guards? - Stack Overflow

c++ - Is #pragma once a safe include guard? - Stack Overflow

里面的大部分回答都是支持使用pragma once,因为更方便,更不容易出错,也更快。

不容易出错的意思是,比如有2个头文件foo/string.hbar/string.h,如果使用#ifndef,并且都定义为

#ifndef STRING_H,那么这2个头文件会冲突,而且出错后会很难找到问题存在的原因,但是使用pragma once,

编译器会自动帮你做这些工作,让你不用担心头文件命名的问题。

但是pragma once也是可能会出错的,根据一个回答的推测,比如说foo.h../a/foo.h对于gcc编译器来说是不一样的??

这条内容有待验证。

如果你写的工程项目不大,那么推荐使用pragma once,如果你写的工程项目非常大,推荐做法如下:

#ifndef HEADER_H#define HEADER_H#pragma once...#endif // HEADER_H

这样的话双重保险。

反正我用pragma once,非常方便,没遇到过问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。