Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2013, 12:25   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию вопрос о extern до создания переменной

Здравствуйте.

Интересует вопрос, можно ли использовать extern в самом заголовочном файле, где описана структура, для которой extern и используется? В основном файле, создается сам массив структуры, которая описана в заголовочном файле... а есть второй .с файл, в нем тоже надо обращаться к массиву структуры, для этого мы подключаем заголовочный файл, где описана структура, и ниже юзаем extern чтобы наш массив был доступен... но что если этот extern прописать сразу в заголовочном файле структуры, чтобы нам лишний раз вручную не прописывать extern, а просто подключать заголовочный файл через include? Вопрос в следующем: главный файл main.c имеет подключение того же самого заголовочного файла, где описана структура, кроме того, там уже вперед идет extern, еще до создания самого массива, на который extern и ссылается... компилятор не ругается... можно ли так делать? Вот ниже пример:

заголовочный файл test.h

Код:
#include <stdio.h>

#define MAX 10

typedef struct
{
char name[32];
float p[3];
} test_s;

extern test_s test[MAX];

файл main.c

Код:
#include <stdio.h>
#include "test.h"

test_s test[MAX];

int main()
{
memset(test,0,MAX*sizeof(test[0]));
...
...
}

иными словами, получается такое:

Код:
extern test_s test[MAX];
test_s test[MAX];
Прошу опытных программистов подсказать, можно ли так делать?

Последний раз редактировалось Артэс; 28.09.2013 в 12:39.
Артэс вне форума Ответить с цитированием
Старый 28.09.2013, 21:14   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Работает?
extern говорит о том, что идентификатор видим не только там, где он объявлен... т.е внешняя (extern) линковка.
также, extern указывает компилятору, что выделение памяти для размещения значения, присущему некоторому объявленному идентификатору, следует отложить до непосредственного определения переменной.
extern int a; //укажем компилятору, что переменная будет описана далее
int a; // объявление + определение
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по переменной egorzenit Общие вопросы Delphi 7 18.03.2012 21:21
Вопрос по работе с переменной egorzenit Общие вопросы Delphi 4 08.03.2012 12:36
проблема с внешней переменной(extern) djetx Общие вопросы C/C++ 3 16.12.2011 22:54
Адрес переменной: Вопрос Black-Sparkle Общие вопросы C/C++ 11 11.08.2009 14:59
Вопрос о типе переменной s1d0r Общие вопросы Delphi 4 17.06.2009 17:27