我尝试通过以下方式在结构声明中初始化字符数组。但是它无法编译,并显示了错误消息。 请告诉我为什么它无法编译。
#include <iostream>
struct A {
const char value_in_struct[] = "a"; // this line gives me a error message.
};
void t(void) {
const char value[] = "a"; // this line was ok at compiling
std::cout << "value = " << value << std::endl;
}
我从gcc收到了以下错误信息。
../static_constexpr_array.hpp:16:33: error: initializer-string for array of chars is too long [-fpermissive]
const char value_in_struct[] = "a";
^
感谢您抽出时间来与我交流。
const char[]
。 - Violet GiraffeA
对象保留多少空间,但如果此类代码是可能的,则value_in_struct
的大小可能会根据其如何初始化(例如复制或默认初始化)而更改。希望有人能引用标准来详细说明此问题。 - Silversonicvalue_in_struct
被声明为静态时,它存在于一个大小不变的单个对象中,这就是为什么它可以解决问题的原因。 - Silversonic