|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|||||||||||||||||||||||||||||||
Раздельная компиляция. Связывание const-переменных07.09.2017, 13:34. Показов 5202. Ответов 70
Метки нет (Все метки)
Не совсем понимаю процесс раздельной компиляции, или то как работает связывание const-переменных. Имеется три файла:
const_test.h
const_test.cpp
general.cpp
Собственно, почему это не вызывает ошибку компиляции? ( Компилировал в VS 2013 ) Разве не должен был произойти конфликт имен, когда в файл "const_test.cpp" включился файл "const_test.h"? Ведь, как я понимаю, extern const int var; -- это отличная переменная от const int var = 10;. Теперь немного изменим код:const_test.h
const_test.cpp
general.cpp
Это уже ошибка. И это, по-моему нормально ( а по законам C++ нет? ), ведь инструкция extern int var; 1) порождает конфликт имен, 2) ссылается на несуществующую переменную ( ведь ни в одной единице трансляции не была объявлена внешняя int переменная с именем var ). В коде изменилось ( опять же таки, по моему мнению ) только то, что переменная var перестала быть const.P.S.: Знаю, что не умею доступно объяснять, но у здешних жителей форума, как показывает практика, хорошо развиты телепатические способности, проблем возникнуть не должно
1
|
|||||||||||||||||||||||||||||||
| 07.09.2017, 13:34 | |
|
Ответы с готовыми решениями:
70
Раздельная компиляция Раздельная компиляция раздельная компиляция |
|
17 / 16 / 3
Регистрация: 18.08.2017
Сообщений: 54
|
|||
| 09.09.2017, 21:03 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 09.09.2017, 21:29 | ||||
|
всякие lvalue/rvalue/prvalue - категории доступа к объектам. они определяют контексты в которых можно, или нельзя получать доступ к объекту. prvalue - категория доступа к временному объекту. никакой абсолютно разницы. Добавлено через 6 минут
0
|
||||
|
17 / 16 / 3
Регистрация: 18.08.2017
Сообщений: 54
|
||
| 09.09.2017, 21:34 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 09.09.2017, 21:43 | |
Сообщение было отмечено Captain Maxee как решение
Решение
1
|
|
|
17 / 16 / 3
Регистрация: 18.08.2017
Сообщений: 54
|
|||
| 09.09.2017, 21:48 | |||
|
Если не лажают, то, исходя из
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 09.09.2017, 21:58 | |
|
0
|
|
|
17 / 16 / 3
Регистрация: 18.08.2017
Сообщений: 54
|
||
| 09.09.2017, 22:17 | ||
|
hoggy, т.е. ни UB, ни лажи компиляторов нет?
Поразительно быстрые изменения после такого
0
|
||
|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
|
| 09.09.2017, 22:26 [ТС] | |
|
УГнетатель, можно подумать, Вы никогда в своей жизни не ошибались?
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.09.2017, 22:40 | |||
|
если после #58 и #59 у вас ещё остались какие то вопросы, то боюсь, я вам помочь ничем уже не смогу. если с кодом (любым) есть какая то лажа, значит одно из двух: либо налажал программист, либо компилятор.
0
|
|||
|
2 / 1 / 1
Регистрация: 22.12.2019
Сообщений: 93
|
|
| 08.09.2020, 23:45 | |
|
0
|
|
|
Вездепух
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
|
||
| 09.09.2020, 00:04 | ||
var получит внутреннее связывание.extern-объявление назначает внешнее связывание только тогда, когда оно является самым первым. В первом примере переменная var получит внешнее связывание.
2
|
||
| 09.09.2020, 00:04 | |
|
Раздельная компиляция Шаблоны и раздельная компиляция Раздельная компиляция файлов Раздельная компиляция и шаблоны Раздельная компиляция и шаблоны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|