Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальные переменные в крупном проекте, ошибка error C2146 
V
    Опции темы
Burka
Дата 16.3.2012, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Привет, подскажите как правильно описать глобальные переменные в проекте с кучей исходных h,cpp файлов.

Пока что я сделал так:

main.cpp:
Код

 MyType my_var;


some1.h
Код

//если нужна та переменная то
extern MyType my_var;


такой вариант у меня работал, когда много файлов использующих друг друга появляется в проекте то возникает ошибка:
 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "my_var"

подскажи-те как это правильнее сделать 

PS. пытался делать shared.h где описывал переменные глобальные но сталкивался с такой же проблемой, не совсем понимаю как надо это делать

Это сообщение отредактировал(а) Burka - 16.3.2012, 19:41


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
JackYF
Дата 16.3.2012, 20:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(Burka @  16.3.2012,  18:40 Найти цитируемый пост)
такой вариант у меня работал, когда много файлов использующих друг друга появляется в проекте то возникает ошибка:
 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "my_var"


Вполне возможно, проблема не в этой строчке. а в одном из включаемых файлов (незакрытая скобка, к примеру). Не вижу ошибок в вашем описании глобальных переменных.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Burka
Дата 16.3.2012, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



ну вот такая ситуация получается, щас еще раз переписал и точно вот нашел место когда ошибка появляется.


main.cpp
Код

MyType my_var;


some1.h
Код

#pragma once
extern MyType my_var;

class MyClass
{

};


some2.h
Код

#pragma once
#include "some1.h" //только при появлении этой строчки уже  возникает ошибка в файле some1.h
error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "my_var"


Это сообщение отредактировал(а) Burka - 16.3.2012, 21:29


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
feodorv
Дата 16.3.2012, 21:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Может, MyType не известен компилятору в месте возникновения ошибки?
Точно определение MyType дано до some1.h?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Burka
Дата 16.3.2012, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2




some1.h
Код

#pragma once
include "MyType.h'

extern MyType my_var;

class MyClass
{

};


компилируется нормально пока я не подключу some1.h в новом файле. Хотя он уже используется во многих h файлах и работает. А тут вдруг проблема просто при подключении some1.h
такое чувство что из за pragma once получается что как то заголовочный файл не виден. 


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Burka
Дата 16.3.2012, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



походу проблема была из за одного пропущенного 
Код

   using namespace myspace;


я не предал этому значения, но оказывается это важно smile


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Dem_max
Дата 17.3.2012, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



замени #pragma once
на нормальную защиту

Код

#ifndef __MY_SOME_
#define __MY_SOME_
#include "MyType.h'

extern MyType my_var;

class MyClass
{

};

#endif // __MY_SOME_


Это сообщение отредактировал(а) Dem_max - 17.3.2012, 05:55


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.