gpt4 book ai didi

c++ - 命名包括 guard

转载 作者:IT老高 更新时间:2023-10-28 21:43:54 26 4
gpt4 key购买 nike

C++ 包含守卫通常是如何命名的?我经常看到这个:

#ifndef FOO_H
#define FOO_H

// ...

#endif

但是,我认为这不是很直观。如果没有看到文件名,很难分辨出 FOO_H 的用途以及它的名称所指的含义。

什么是最佳实践?

最佳答案

我个人遵循 Boost 的建议。它可能是最大的高质量 C++ 库集合之一,而且它们没有问题。

它是这样的:

<project>_<path_part1>_..._<path_partN>_<file>_<extension>_INCLUDED

// include/pet/project/file.hpp
#ifndef PET_PROJECT_FILE_HPP_INCLUDED

这是:

  • 合法(注意以 _[A-Z] 开头或包含 __ 是不合法的)
  • 易于生成
  • 保证在项目中是唯一的(作为包含保护)(否则您在同一位置有两个文件)
  • 保证不用于其他任何用途(如果您以 INCLUDED 结束另一个宏,您就是在打架)

我读过关于 GUID 的文章,但那些看起来很奇怪。

显然,我宁愿不是所有编译器都实现 #pragma once(或者更好的是,#pragma multiple 和“once”是默认行为......)

关于c++ - 命名包括 guard ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com