【问题标题】:C++: undefined reference to const pointer when declaring as externC ++:声明为extern时对const指针的未定义引用
【发布时间】:2020-06-10 00:24:41
【问题描述】:

在编写以下代码时出现编译器错误:

  • file1.cpp:声明/定义多个变量
  • file1.cpp:定义一个指向这些变量中的每一个的指针数组->该数组应为 const(=始终指向这些变量)
  • file2.cpp:这里我想用指针数组,用它指向的变量。
    //file1.cpp
    int a,b,c,d;
    int *const pa[4] = {&a, &b, &c, &d};

    //file2.cpp
    extern int *const pa[4];

编译时会丢弃 file2.cpp 中的错误:

undefined reference to `pa'

如何用常量指针定义那个指针数组,并在不同的源文件中使用?

最好的问候:-)

【问题讨论】:

    标签: c++ pointers constants


    【解决方案1】:

    默认情况下,const 变量具有内部链接。要获取外部链接,请在定义中添加extern

    extern int *const pa[4] = {&a, &b, &c, &d};
    

    【讨论】:

    • 或者可能更简洁:将extern int *const pa[4]; 声明放在标题中,并将其包含在file1.cppfile2.cpp 中。这样可以避免类型不匹配。
    • 谢谢。它现在正在工作。知道了这一点,经过 5 分钟的研究后,我发现,我上面所做的就是使用变量。即使在定义处,使用 const 也总是需要 extern。或者像核桃提到的那样把它放在一个标题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多