scope — доступ к внешней переменной в C ++ из другого файла

У меня есть глобальная переменная в одном из файлов cpp, где я присваиваю ей значение. Теперь, чтобы иметь возможность использовать его в другом файле cpp, я объявляю это как extern и этот файл имеет несколько функций, которые используют его, поэтому я делаю это глобально. Теперь к значению этой переменной можно получить доступ в одной из функций, а не в другой. Любые предложения, кроме как использовать его в заголовочном файле, были бы хорошими, потому что я потратил 4 дня, играя с этим.

6

Решение

Извините, я игнорирую запрос ответов, предлагающих что-либо кроме использования заголовочных файлов. Вот для чего нужны заголовки, когда вы используете их правильно … Читайте внимательно:

global.h

#ifndef MY_GLOBALS_H
#define MY_GLOBALS_H

// This is a declaration of your variable, which tells the linker this value
// is found elsewhere.  Anyone who wishes to use it must include global.h,
// either directly or indirectly.
extern int myglobalint;

#endif

global.cpp

#include "global.h"
// This is the definition of your variable.  It can only happen in one place.
// You must include global.h so that the compiler matches it to the correct
// one, and doesn't implicitly convert it to static.
int myglobalint = 0;

user.cpp

// Anyone who uses the global value must include the appropriate header.
#include "global.h"
void SomeFunction()
{
// Now you can access the variable.
int temp = myglobalint;
}

Теперь, когда вы компилируете и связываете свой проект, вы должны:

  1. Скомпилируйте каждый исходный файл (.cpp) в объектный файл;
  2. Свяжите все объектные файлы, чтобы создать свой исполняемый файл / библиотеку / что угодно.

Используя приведенный выше синтаксис, вы не должны иметь ни ошибок компиляции, ни ссылок.

25

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]