gpt4 book ai didi

c++ - 使用 static 关键字为全局字符串变量添加前缀是否会减少整体程序大小?

转载 作者:太空狗 更新时间:2023-10-29 20:43:20 25 4
gpt4 key购买 nike

我正在编写一个执行大量字符串解析的 C++ 应用程序。我将我的字符串定义保存在一个普通的头文件中(没有相应的 C++ 文件)。

头文件使用#ifdef XXX 来确保它只被编译器处理一次。

我可以选择声明字符串

const TCHAR m_szRoot[] = _T("root");

static const TCHAR m_szRoot[] = _T("root");

这些变量在应用程序中被多次使用。

推荐的声明是什么?从应用程序大小的角度来看,哪种声明更好。

最佳答案

如果您从包含在多个翻译单元中的 header 制作相同的 static,每个生成的文件将获得其自己的对象拷贝,这可能会增加您的应用程序的占用空间。此外,对象将驻留在不同的地址,可能会使相等比较变慢。链接时优化可以组合相同的常量,但这是可选的。

避免重复的一种特定方法是将常量放在单独的翻译单元(即 CPP 文件)中,并在头文件中使用 extern

标题:

extern const TCHAR m_szRoot[];

常量.cpp:

const TCHAR m_szRoot[] = _T("root");

这将确保每个常量的单一定义。

关于c++ - 使用 static 关键字为全局字符串变量添加前缀是否会减少整体程序大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585818/

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