gpt4 book ai didi

c++ - 全局变量,它们到底是什么?

转载 作者:行者123 更新时间:2023-11-28 02:52:27 28 4
gpt4 key购买 nike

首先,我是 C++ 的新手,并且“试图”为我的变量添加前缀。但我不是很清楚。所以我的问题是,在静态变量前加上“g_”是否正确?谢谢!

using namespace std;

// The main window class name.
static TCHAR g_szWindowClass[] = _T("win32app");

// The string that appears in the application's title bar.
static TCHAR g_szTitle[] = _T("Win32 App");

...

最佳答案

最好使用前缀来区分全局变量。但是

  • 最好尽可能避免使用全局变量,并且

  • 在 C++ 中,您可以使用命名的命名空间,而不是 C 风格的前缀。

它还有很多优点可以避免微软的T宏观愚蠢。它支持 Windows 9x,而您可能不以 Windows 9x 为目标。此外,它还有很多优点,尤其是在维护方面,可以避免微软愚蠢的匈牙利符号,即像 sz 这样的前缀。 ,它支持 Microsoft 1980 年的 Programmers Workbench 帮助系统,就像 Windows 98 一样,它不再很重要了。

此外,使用 const 可能更有利在实际可行的情况下。

请注意 const在 namespace 级别意味着静态存储类,因此显式 static然后就不再需要了。

因此,代替当前的

// The main window class name.
static TCHAR g_szWindowClass[] = _T("win32app");

namespace g {
auto const windowClassName = L"win32app";
}

  • C++ 命名空间 g而不是 C 前缀 g_ ,

  • const添加,保证这个变量不被修改,并且

  • 直接使用宽字 rune 字代替 Microsoft Windows 9x T宏。

那你可以引用g::windowClassName , 或者在 using namespace g; 之后没有前缀,甚至使用 g 的别名.

我对命名空间使用的特殊大括号约定是为了支持嵌套命名空间而无需缩进麻烦。不幸的是,普通编辑器不支持它。

关于c++ - 全局变量,它们到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736150/

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