gpt4 book ai didi

c++ - 清理遗留代码 "header spaghetti"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:10 27 4
gpt4 key购买 nike

任何清理“header spaghetti”的推荐做法编译时间慢 (Linux/Unix)?

在 GCC 中是否有任何等同于“#pragma once”的东西?
(发现关于此的相互矛盾的消息)

谢谢。

最佳答案

假设您熟悉“include guards”( header 开头的#ifdef..),另一种加快构建时间的方法是使用外部 include guards。它在“Large Scale C++ Software Design”中进行了讨论。这个想法是,经典的包含 guard ,与#pragma once 不同,不会让您从第二次开始忽略 header 所需的预处理器解析(即它仍然必须解析并寻找包含 guard 的开始和结束。随着外部包含保护您将#ifdef 放在#include 行本身周围。

所以看起来像这样:

#ifndef MY_HEADER
#include "myheader.h"
#endif

当然在 H 文件中你有经典的 include guard

#ifndef MY_HEADER
#define MY_HEADER

// content of header

#endif

这样 myheader.h 文件甚至不会被预处理器打开/解析,它可以在大型项目中为您节省大量时间,尤其是当头文件位于共享的远程位置时,它们有时会这样做。

再一次,这一切都在那本书里。

关于c++ - 清理遗留代码 "header spaghetti",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/110436/

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