代码之家  ›  专栏  ›  技术社区  ›  postfuturist

你能在C++中将指针声明为extern吗?

  •  1
  • postfuturist  · 技术社区  · 16 年前

    我有以下无法编译的遗留C++代码:

    #include <stdio.h>
    #include <iostream>
    
    extern ostream *debug;
    

    GCC(g++)抱怨:“*标记前应有初始化器”

    环顾四周,将这些声明为外部引用似乎更为常见,如下所示:

    extern ostream& debug;
    

    为什么指针无效,但引用在这种情况下是有效的?

    解决方案:

    如下所述,真正的问题是缺少std::namespace说明符。显然,这在旧的C++代码中很常见。

    1 回复  |  直到 16 年前
        1
  •  7
  •   Johannes Schaub - litb    16 年前

    是的,您可以使用extern声明指针。你的错误很可能是你忘了使用 std:: :

    // note the header is cstdio in C++. stdio.h is deprecated
    #include <cstdio>
    #include <iostream>
    
    extern std::ostream *debug;