2012-01-27 5 views
0

Можно создать дубликат:
const and globalехЬегп странное поведение

Этот код будет производить ошибку в C++

// Foo.cpp 
const int Foo = 99; 

// Main.cpp 
extern const int Foo; 
int main() 
{ 
    cout << Foo << endl; 
    return 0; 
}  

Причина, как указано многими глобальна Const имеет внутренний размах и он по умолчанию статический.

решение это: -

//Foo.h 
    extern const int Foo; 

    // Foo.cpp 
    #include "Foo.h" 
    const int Foo = 99; 

    // Main.cpp 
    #include "Foo.h" 
    int main() 
    { 
     cout << Foo << endl; 
    } 

Я привык думать, что ехЬегп используется, чтобы сообщить компилятору, что память для indentifer уже выделено где-то в других файлах.
Применение такой же логики на вышеуказанном коде может кто-нибудь объяснить, что здесь происходит, или extern имеет другое значение в C++ ??
enter link description here
Также рассмотреть эту страницу это портит мои все интуитивные ..

+1

Разве вы не задавали один и тот же вопрос около 2 часов назад? Вы читали ответы там? Если вы все еще сомневались в вопросе Q, который вы задали ранее, вы должны добавить свои сомнения в качестве комментариев к ответам, а не задавать новый вопрос. –

+0

@als Я думаю, что для устранения сомнений других лучше всего делать в SO. –

+0

Ну, не задавая один и тот же вопрос снова и снова, Если вы не понимаете ответа, задайте сомнения в разделе комментариев в ответе, а не начинайте другой вопрос. Пожалуйста, прочитайте FAQ ЧАСТОТЫ. –

ответ

0

Добавлен extern ... линию к CPP, который - я думаю - убивает внутреннее поведение сцепления следующей строки.

// Foo.cpp 
extern const int Foo; 
const int Foo = 99; 

Также сделаны некоторые несвязанные поправки к Main:

// Main.cpp 
#include <iostream> 
extern const int Foo; 
int main() 
{ 
    using namespace std; 
    cout << Foo << endl; 
    return 0; 
} 

Они #include <iostream> и using namespace std;.

Этот ответ теоретически не обоснованно аргументирован, но работает для меня с g ++.

+0

UPDATE: Если вы введете 'const int Foo = 99' в Foo.cpp, это также верно. Сообщение, на которое ссылается Альс, объясняет. – Notinlist

Смежные вопросы