我想知道头文件中的静态变量与类中声明的静态变量之间的区别.在头文件中声明静态变量时,其范围仅限于.h文件或所有单元.一般来说静态变量在类中声明时在.cpp文件中初始化了吗?那么这是否意味着静态变量范围仅限于2个编译单元?
我一直想知道是否可以使用带有一些优化标志的 GCC 进行编译以避免 .rodata 部分有两个重复的数组?因此,内存地址将是相同的。例如:
\n\nconst char str [7] = "string";\n\nconst char str1 [7] = "string";\n\n\nint printf (const char * format, ...);\n\nint main (void) {\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 if (str == str1)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 printf ("Equal memory addresses");\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 return 0;\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n那么在上面的例子中,编译器是否有可能以某种方式使用相同的内存地址?
\n在头文件中定义全局 std::string 是否正确,如下所示:
namespace Colors
{
static const std::string s_blue = "Blue";
}
Run Code Online (Sandbox Code Playgroud)