Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
Сразу ответ: потому что функцию можно объявить и определить, а у переменных эти стадии неразделимы. Подробнее: Погуглил словосочетание "external linkage". Везде пишут, что это означает, торчит ли объект из модуля сборки (виден компоновщику или не виден компоновщику). Пишут, что вот это: Код: plaintext 1. 2. по-умолчанию - external linkage. То есть, если собрать объектный файл, то из него будут торчать имена x и func. А если перед ними написать static, то торчать перестанут. И вот в этих статьях везде пишут, что типа хочешь пиши слово extern, хочешь не пиши - как было external linkage, так и останется. Но ведь мы (ламеры) помним, что чаще всего слово extern используют, когда хотят сказать: "эта переменная тут не определена, определена где-то в другом модуле, ищи не здесь". Почему тогда мы таким же макаром не пишем extern перед объявлением какой-то функции, которая определена в другой единице сборки, а перед переменной пишем? Потому что у переменных нет стадии "объявлена"! Стрелять-колотить! Если ты написал int x, ты её сразу и определил. Поэтому, если написать int x в двух разных единицах сборки, это будет то же самое, что определить (написать тело) функцию в двух разных единицах сборки. Я одного не понял: почему компилятор, скотина, даёт warning, если я пишу: Код: plaintext 1. по-сути я ведь написал, что int x имеет external linkage (как и без слова extern) и равно 5. Эти скрытые смыслы в C++ задолбали. Мля, вы уже определитесь, что означает слово extern - что это external linkage или "тут не определена, ищи в другом месте"? Короче, открытие состоит в том, что слово extern для объявления или определения функции не меняет НИЧЕГО, а для int оно УБИВАЕТ ОПРЕДЕЛЕНИЕ, оставляя только ОБЪЯВЛЕНИЕ этой переменной. Разрыв штанов и раскол почвы. Священные знания... Застрелиться же можно. Я осознал эту бодягу и делюсь с другими ламерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 15:42 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
Забыл воткнуть warning, который компилятор даёт на Код: plaintext 1. Код: plaintext 1. Чёртово оленеводство! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 15:44 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
боевыеЭти скрытые смыслы в C++ задолбали.а это не С++, эти ноги из С растут, оставлено для совместимости. Ну и, вообще говоря, глобальные переменные - зло, если перестать ими пользоваться, то и весь этот гемор с extern и static становится не нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:24 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
Вообще-то это написано в любом учебнике по С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:24 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВообще-то это написано в любом учебнике по С. Учебники редко читают вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 16:53 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
боевыеУчебники редко читают вообще.тогда не удивляйся, что постоянно будет боевыеРазрыв штанов и раскол почвы. Священные знания... Застрелиться же можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 18:13 |
|
||
|
Загадка: почему "extern int x" и "int x" в одном файле компилируются?
|
|||
|---|---|---|---|
|
#18+
egorychбоевыеУчебники редко читают вообще.тогда не удивляйся, что постоянно будет боевыеРазрыв штанов и раскол почвы. Священные знания... Застрелиться же можно А я удивляюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2014, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38669060&tid=2019420]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 312ms |
| total: | 465ms |

| 0 / 0 |
