Переменная типа Enum в разных модулях

  • Автор темы Автор темы Andrey97
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
A

Andrey97

C++ Builder 6.

В модуле 1 объявлена переменная:
C++:
enum {a, b, c} State;

В модуле 2 при попытке присвоить переменной значение
C++:
State=a;
выдается ошибка
[C++ Error] Unit1.cpp(107): E2451 Undefined symbol 'a'.
Почему то компилятор переменную "видит" но "не видит" строковую константу внутри объявленной переменной.
 
C++ Builder 6.

В модуле 1 объявлена переменная:
enum {a, b, c} State;

В модуле 2 при попытке присвоить переменной значение
State=a;
выдается ошибка
[C++ Error] Unit1.cpp(107): E2451 Undefined symbol 'a'.
Почему то компилятор переменную "видит" но "не видит" строковую константу внутри объявленной переменной.

Я точно не помню,но помойму перечисляемые константы доступны только в определнном пространстве имен или в текущем модуле

так что даже ни какой extern не поможет, из чего следует, что смело перемещай его в заголовочный файл отдельный и подгружай #include ом
 
А лучше при описание используй пространство имен, что бы не напутать с объявленным идентификаторамы переменных и констант

C++:
//Заголовочный файл
namespace MyStatus
{
enum {a, b, c} State;

}
//----------------------------------

#include "Наш заголовочный файл"

{
int State;
State = MyStatus::c;


}
 
А лучше при описание используй пространство имен, что бы не напутать с объявленным идентификаторамы переменных и констант
Обошлось без пространства имен.
Вообще переменные enum входят в состав структуры. Я в заголовочном файле объявил теги enum, затем объявил тип структуры с содержанием этих типов enum. При подключении такого файла другой модуль не ругается на имена значений enum.
Все равно всем спасибо!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab