реклама на сайте
подробности

 
 
> Помогите разместить глобальные переменные в одном файле!, Прочитал ниже про обьявления структур, ничего не понял.
fmdost
сообщение Aug 19 2007, 14:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Подскажите Уважаемые, как обьявить глобальные переменные только в одном файле? Есть несколько с файлов *.с в которых приходится писать extern. Хотелось бы иметь только один такой файл.

Сообщение отредактировал Т.Достоевский - Aug 19 2007, 15:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Непомнящий Евген...
сообщение Aug 20 2007, 04:18
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Дык в чем проблема-то? Переменную надо определить - в одном месте и объявить - в каждом файле, где вы ее используете и не определяете (через хедер). Если переменных "очень много и постоянно добавляются" - может вам подумать о структурах\массивах?
Кстати, если использовать структуры, то можно извернуться так:
Код
/////// global.h
#ifndef _GLOBAL_H
#define _GLOBAL_H

typedef struct _myGlobals
{
  char g1;
  long g2;
  /// и т.д.
} MyGlobals;

extern MyGlobals G;

#endif

////// global.c

#include "global.h"

MyGlobals G;

////// main.c

#include "global.h"

int main()
{
  G.g1 = 'a';
  G.g2 = 1234;
}


Правда, придется предварять каждое обращение к переменной префиксом G, но с другой стороны, это и к лучшему - вы всегда будете знать, что имеете дело с глобальной переменной...

Цитата(arttab @ Aug 20 2007, 08:11) *
а если объявить до main разве они не будут глобальные?


Будут. Но если они используются и в других файлах, то их все равно придется еще раз объявлять либо в хидере, либо в каждом таком c-файле.

Сообщение отредактировал Непомнящий Евгений - Aug 20 2007, 04:19
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 23:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01459 секунд с 7
ELECTRONIX ©2004-2016