Можете ли вы объявить указатель как внешний в C++?

У меня есть следующий бит унаследованного кода C++, который не компилируется:

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

extern ostream *debug;

GCC (g ++) жалуется: "ожидаемый инициализатор перед токеном *"

Оглядываясь вокруг, кажется более распространенным объявлять их как внешние ссылки, например так:

extern ostream& debug;

Почему указатель недействителен, но в этой ситуации есть ссылка?

РЕШЕНИЕ:

Реальная проблема, как упомянуто ниже, состоит в том, что отсутствует спецификатор std:: namespace. По-видимому, это было распространено в старом коде C++.

1 ответ

Решение

Да, вы можете объявить указатель, используя extern. Ваша ошибка, скорее всего, вы забыли пройти квалификацию, используя std:::

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

extern std::ostream *debug;
Другие вопросы по тегам