Re: extern и массивы
От: Brn Россия  
Дата: 17.06.08 13:30
Оценка:
Здравствуйте, overt, Вы писали:

O>В одном файле объявлен и инициализирован массив

O>
O>char str[] = "0123456789";
O>

O>а в дргом объявлен как
O>
O>extern char str[100];
O>


O>Каков истинный размер такого массива, 100 или 11 ?

O>И как убедиться, что рамезр именно таков, т.к. даже если объявляю

Если файл, в котором char str[] = "0123456789" включает в себя файл в котором extern char str[100] (заголовочный), то 100, иначе 11.
Re[2]: extern и массивы
От: Brn Россия  
Дата: 17.06.08 13:58
Оценка:
Проверить можно посмотрев в .map файле или его аналоге.
Re[5]: extern и сложные типы
От: overt Ниоткуда  
Дата: 17.06.08 14:09
Оценка:
Здравствуйте, Bell, Вы писали:

B>По умолчанию константы имеют внутреннее связывание. Чтобы сделать константу с внешним связыванием, нужно явно указать extern при определении:



Спасибо за разъяснение.
Наверно есть какая-то целесообразность для внутреннего связывания констант..
(MS VS 7.1/8.0)
Re[6]: extern и сложные типы
От: Bell Россия  
Дата: 17.06.08 14:12
Оценка:
Здравствуйте, overt, Вы писали:

O>Спасибо за разъяснение.

O>Наверно есть какая-то целесообразность для внутреннего связывания констант..
Например это позволяет выносить определение констант в заголовочные файлы.
Любите книгу — источник знаний (с) М.Горький
Re: extern и массивы
От: AleksandrN Россия  
Дата: 17.06.08 14:30
Оценка:
Здравствуйте, overt, Вы писали:

O>В одном файле объявлен и инициализирован массив

O>
O>char str[] = "0123456789";
O>

O>а в дргом объявлен как
O>
O>extern char str[100];
O>


O>Каков истинный размер такого массива, 100 или 11 ?


Если нужен массив заданного размера, то лучше сделать так:
// 1.cpp
char str[100] = "0123456789";
// 2.cpp
extern char str[];


В этом случае всё будет корректно работать (если не будет выхода за пределы массива) и массив будет нужного размера.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.