Можете ли вы объявить указатель как внешний в C ++? - PullRequest
1 голос
/ 14 декабря 2008

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

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

extern ostream *debug;

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

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

extern ostream& debug;

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

РЕШЕНИЕ:

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

1 Ответ

7 голосов
/ 14 декабря 2008

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

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

extern std::ostream *debug;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...