[C++] #pragma once
·
看到一段代码使用了 #pragma once:
#if !defined(STRING_MANIPULATOR_H_INCLUDED)
#define STRING_MANIPULATOR_H_INCLUDED
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#endif // !defined(AFX_STRINGTOKENIZER_H__03F4D15A_A411_42B6_9F90_485B62939428__INCLUDED_)
#pragma once 目的和#ifndef,#define,#endif目的相同,防止头文件被重复包含。
#pragma once 是编译器选项, GCC3.4之前的版本不支持,而#ifndef受语言自身支持。
#pragma once 的缺点是,如果相同的文件分散在不同位置,编译器会以为它们是不同的文件。
使用#pragma once 的好处是,如果文件名改变,不需要作任何修改,但是如果使用#ifndef,#define,#endif 就要修改,造成维护的困难。绝大多数情况下, 使用#pragma once都能实现预期目的。
#ifndef MY_HEADER_HPP // 如果文件名改变,也要修改MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
[1] https://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard
更多推荐


所有评论(0)