![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
ты сказал, что глобальные переменные - это зло к этому я и предрался -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
Если я не объявлю её, она выдаст ошибку ?
С чего ты взял что я неправильно понял ? |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
из-за
и т.д. extern нужен только для того, чтобы 2 модуля использовали 1 переменную Вся проблема в том, что компилер компилирует каждый cpp отдельно. Потому и придумали такой маневр с extern Если бы он компилил сразу всю прогу (весь проект), то и ключевого слова extern не было бы |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
Не, не только, ещё если определение глобальной переменной стоит ниже обращения к ней в одном модуле. Ладно, vinter, спасибо, просвятил меня конкретно |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
inside_pointer, настоятельно рекомендую тебе почитать пункт стандарта 3.5 Program and linkage. А форумчанам ты особо не доверяй - в вопросах касательно linkage они разбираются не намного лучше тебя.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
для этого используются прототипы -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
Я писал вот такую
Ошибок не выдал |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
да ты прав, забыл правда вероятность, что тебе придется эту возможность использовать практически равна 0, если прогу писать буш нормально (то есть все инклуды вверху cpp-шки и так далее) |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
поскольку "прототип" - это объявление, а объявление переменной - это с ключевым словом extern, то extern int i; - это прототип переменной
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
Не надо фантазий. Есть лишь понятие "function prototype". Которое есть форма вызова функции. Которая может являться частью объявления функции.
extern int i; - это объявление переменной Если я неправ, покажите где про это в стандарте. |
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
Ребят, если можно, у меня вопрос по теме :
Компилятор - MVC++ 9.0 (2008) Я собрал несколько библиотек и прилинковал их к одному exe-шнику. Как импортировать/экспортировать функции и классы - сам знаю и другим объяснял уж никак не меньше 100 раз Правильно ли, что в библиотеке, которая должна содержать сами символы, я даю определения, например :
- iostring - это такая глобальная книга жалоб и предложений, в которую каждый класс в любой из библиотек должен иметь возможность излить свою проблему. Следовательно, во всех других библиотеках я должен дать описания, как extern.
Правильно? -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Нет, неправильно. Нельзя задавать размер статического массива переменной.
Попробуй extern iostring[] или сделай MAXIOSTRINGLENGTH макросом (#define MAXIOSTRINGLENGTH 1024), что более соответствует способу именования (заглавными буквами принято называть макросы). |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |