首页 > 后端开发 > C++ > 为什么 C 中的静态 constexpr Char 数组会出现'未定义引用”错误?

为什么 C 中的静态 constexpr Char 数组会出现'未定义引用”错误?

Linda Hamilton
发布: 2024-12-23 04:07:27
原创
440 人浏览过

Why Do I Get an

对静态 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板