对静态 constexpr Char 数组的未定义引用:了解未定义引用问题
在 C 编程语言中,可以定义静态常量类中的字符数组。但是,开发人员在尝试在代码中引用此类数组时可能会遇到“未定义的引用”错误。出现此错误的原因是编译器需要静态成员的声明和定义。
要解决此问题,应按如下方式修改代码。在类定义(.hpp 文件)中,静态数组的声明和初始化应保留在类内部。在实现文件(.cpp文件)中,应添加单独的一行来提供静态数组的定义。
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // now compiles successfully } constexpr char foo::baz[]; // definition of static member
通过单独提供静态成员的定义,编译器可以链接引用正确地写入数组,解决了未定义的引用错误。声明和定义之间的这种分离是必要的,因为在编译期间必须知道数组的大小,而其初始化可以推迟到以后。
以上是为什么 C 中的静态 constexpr Char 数组会出现'未定义引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!