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

标签 c++ pointers legacy

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

#include <stdio.h>
#include <iostream>

extern ostream *debug;

GCC (g++) 提示:“在‘*’标记之前需要初始值设定项”

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

extern ostream& debug;

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

解决方案:

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

最佳答案

是的,您可以使用 extern 声明一个指针。您的错误很可能是您忘记了使用 std:: 进行限定:

// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>

extern std::ostream *debug;

关于c++ - 你能在 C++ 中将指针声明为 extern 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366134/

相关文章:

Visual C++ 中的 C++ 代码库打开错误

c - 为什么在 C 中打印字符时使用星号作为指针而不是字符串?

php - 重构的成本是否超过重写的成本?

android - 为什么从 API 18 开始,API 演示被视为 "legacy"?

c++ - 向现有项目添加单元测试

java - 如何在 Java 代码中使用从 .dll 中使用和返回对象的函数?

c++ - 错误 : ' ' was not declared in this scope

c++ - std::memory_order_XXX 是如何工作的

c - 从字符串构建字符数组 (C)

c++ - 指针数据成员未初始化