|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||
Внешний define или нечто подобное27.09.2024, 17:53. Показов 1242. Ответов 11
Метки нет (Все метки)
всем привет
был изначально код все в одном файле в нем был некий
и соответственно там дефайна нет правильно ли будет сдублировать этот дефайн и в новом файле и последующих? или лучше объявить это в стиле с++ как например const char или const int .... и далее через экстерны? Добавлено через 54 секунды как правильнее методологически это делать, и какие могут быть нехорошие последствия у каждого из способов?
0
|
||||||
| 27.09.2024, 17:53 | |
|
Ответы с готовыми решениями:
11
Как работает эта штука, и как сделать нечто подобное ? Как создать, нечто подобное файловой системе - из массивов?. Как? (сломал весь мозг) Инфаметр или нечто подобное |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 27.09.2024, 18:19 | |||
|
Добавлено через 2 минуты Например вы можете его переопределить, тот самый, но значение будет другим и последствия тоже. Ещё стоит уточнить, в каких файлах находится этот дефайн, исходники или хидеры.
0
|
|||
|
Вездепух
13179 / 6815 / 1821
Регистрация: 18.10.2014
Сообщений: 17,243
|
|||
| 27.09.2024, 18:31 | |||
|
Или, если это действительно глобальная настройка, альтернативным вариантом будет передавать ее через ключи компилятора, то есть указываться этот дефайн должен через средства сборки. #define.Если можно, то лучше. (Неясно, при чем здесь только "экстерны").
1
|
|||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||
| 27.09.2024, 19:44 [ТС] | ||||
|
вроде как ключевое слово "extern" Для этого и используется. Добавлено через 1 минуту ну в принципе понятно что хидеры включаются. я в данные момент вынес в хидер, потом что в два исходника тащить не хотелось. Добавлено через 1 минуту
0
|
||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 27.09.2024, 22:40 | |||||||
|
Он (препроцессор С++) работает непосредственно с текстом программы и ничего не знает ни про константы ни про С++ ни про что либо другое. Когда ты это поймешь, всё станет понятно с дефайнами. Более конкретно, они (define-s) могут принимать аргументы.
Возможности замены : https://en.cppreference.com/w/... or/replace
0
|
|||||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 27.09.2024, 23:04 [ТС] | ||
|
просто подстановка например можно задефайнить и писать на с++ как на 1С и макросы и переменные передавать в эти конструкции можно вот только пишут что в стиле с++ лучше использовать шаблоны вместо этого и в целом у меня вопрос даже мысль что навеное директивы # лучше использовать только там где нельзя обойтись средствами с++ НО возникает такая штука что если задефйнил нечто и потом заинклюдил это нечто и использую далее в другом файле - то ошибки не будет, потому что компилятор заменит все в момент инклюда. а вот если я начну объявлять это все переменными то придется каждый раз описывать эти переменные в каждом файле как extern. Добавлено через 3 минуты ан, нет . инклюд все перекрыл ![]() хорошим ли тоном является объявлять константы как константы , а не как дефайны? по сути наверн вопроса нет. вроде всё понятно Добавлено через 3 минуты но с дефайнами можно реально передефайнить и никто даже не ругнется, а если константными переменными пееропределить - то ругается. безопаснее использовать переменные там где это возможно, это я верно понял?
0
|
||
|
Вездепух
13179 / 6815 / 1821
Регистрация: 18.10.2014
Сообщений: 17,243
|
|||
| 28.09.2024, 03:44 | |||
|
И что значит "а как еще"? А как "не еще"? А как вы собрались объявлять переменную при помощи #define? #define для определения переменных. О чем речь вообще?
1
|
|||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 01.10.2024, 01:43 [ТС] | |
|
^)
ну я имел ввиду пересобрал я проект, вижу пины заняты, я переместил пин с 10 на 7 получается переменная, константная ![]() так то понятно ну всеже поняли , что имелось ввиду. Взять любой проект там куча дефайнов, по факту все можно const int|float|любойДругойТип и через запятую. но почему то часто через define пишут простыню. и ведь неизвестно в какой тип этот дефайн преобразуется. Кстати могут ли быть какие-то проблемы с неверной интерпретацией компилятором текстовых значений? Добавлено через 1 минуту p/s/ пересобрал имеется ввиду не в среде разработки нажал "пересобрать" а пересобрал физически , натыкал на макетке или спаял
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 01.10.2024, 02:13 | ||
|
Он раскроется в том виде в котором был записан. Типы (включая литералы) определяет компилятор, не препроцессор. Добавлено через 9 минут Example : In CPPInsights in OnlineGDB
1
|
||
|
435 / 159 / 28
Регистрация: 12.12.2020
Сообщений: 1,269
|
||
| 01.10.2024, 02:19 | ||
|
В таком варианте лучше создать отдельный файл pins.h например или hardware.h или как там по смыслу и там прописывать через дефайны пины. И везде где надо его подключать. Но я обычно делаю (если речь про микроконтроллеры) отдельные файлы для работы с каждым блоком (uart, adc, power) и в их хидерах прописываю нужные пины. И при необходимости подключаю эти хедеры. Но, как правило, такой необходимости нет, так как вся работа с данным блоком только в этом файле. Удобно потом забрать весь файл в другой проект, поменяв пины и пользовать.
0
|
||
| 01.10.2024, 08:54 | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 01.10.2024, 15:54 | |||
|
1
|
|||
| 01.10.2024, 15:54 | |
|
Помогаю со студенческими работами здесь
12
Как запускать asp.net web administration tool или нечто подобное не из среды VS
Как зашифровать строки в нечто подобное Подскажите, как реализовать нечто подобное Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|