Определяет область действия переменной, декларации или определения?Определяет ли объявление или определение область видимости переменной в C++?
документация, я прочитал говорит, что декларация определяет сферу, но мой собственный тест сказал наоборот:
я получаю «неопределенную ссылку на I» ошибку с линкером:
#include <iostream> // Stream declarations
using namespace std;
extern int i; //declaration
int prueba();
int main() {
int i; //Definition
i=6;
prueba();
} ///:~
int prueba(){
cout << i; //cannot access to the scope of i;
}
Этот вопрос имеет смысл только там, где декларация отличается от определения, что очень редко. Итак, если вы могли бы привести нам пример случая, о котором вы беспокоитесь, я уверен, что мы сможем ответить на него. –
Отличие между определением и декларированием имеет смысл только для типов/функций, не так ли? Можно ли провести это различие с переменными? – jalf
Я думаю, что @Michael Burr также указывает, что этот вопрос имеет «легкий» ответ, который просто говорит, что область действия * имя * является ее декларацией и «подробным, но громоздким» ответом, который фактически объясняет сферу действия переменной и который имеет множество особых случаев. Не уверен, что вопрос на самом деле требует. –