|
0 / 0 / 0
Регистрация: 14.06.2018
Сообщений: 55
|
|
Define vs const06.07.2018, 16:59. Показов 4221. Ответов 12
Метки нет (Все метки)
возможно эта тема не раз поднималась, но я ее так и не нашел, какая из эти записей лучше
#define SIZE 1000 const int SIZE =1000 ?
0
|
|
| 06.07.2018, 16:59 | |
|
Ответы с готовыми решениями:
12
Const #define #define PI or static const float PI Чем оличается define от const |
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|
| 06.07.2018, 17:43 | |
|
ну в первом случае ты даешь команду препорцессору(вроде так называется) заменять все вхождения SIZE в этом файле на 1000. То есть он просто подставляет что-то "вместо" - это define
во втором случае ты просто создаешь переменную которую нельзя изменять. Свойства такие же как у обычной переменной : если она локальная - не будет видна в других блоках кода, можешь взять адрес, передать по ссылке/указателю и т.д
0
|
|
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
||||||
| 06.07.2018, 18:10 | ||||||
|
Вообще говоря, вторая запись лучше. Она работает на уровне компилятора, то есть с учетом проверки области видимости, типа и прочего. Вот только некоторые компиляторы не понимают конструкций вида
0
|
||||||
|
393 / 263 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
|
|||||||
| 06.07.2018, 18:24 | |||||||
0
|
|||||||
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
|||
| 06.07.2018, 18:37 | |||
|
P.S. Ответ на это вопрос фундаментально отличается в С и С++. В С в большинстве случаев "лучше" первый. Но это форум по С++. Добавлено через 45 секунд
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 06.07.2018, 20:15 | ||
|
ИМХО: Если например нужно произвести некоторые манипуляции на уровне препроцессора используя именованную константу, то тут нам нужен макрос. Так же если нам нужны именованные константы, можно тоже использовать макрос. Проще говоря, везде где не требуется свойство переменных например, взятие адреса, можно применять макрос и это думаю будет не хуже чем константная переменная... Но с точки зрения хорошего стиля наверное в классах/функциях для определения именованной константы наверное лучше использовать переменные а не макросы что бы код был "однотонным". Но отказываться от макросов по вышеописанным причинам думаю не нужно...
0
|
||
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
|||||
| 06.07.2018, 21:40 | |||||
|
1
|
|||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 06.07.2018, 22:07 | |
|
TheCalligrapher,
Согласен с вами, спасибо. В общем я так смотрю макросы наверное нужно использовать если значение именованной константы нужно в других макросах, либо для всяких платформозависимых финтов типа ifdef и т.д. А если данные используются после препроцессинга тогда уже применять только переменные...
1
|
|
|
"C with Classes"
|
|
| 07.07.2018, 09:48 | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 07.07.2018, 17:17 | ||
|
0
|
||
|
Модератор
|
|||||||
| 07.07.2018, 17:34 | |||||||
1
|
|||||||
| 07.07.2018, 17:34 | |
|
Помогаю со студенческими работами здесь
13
Различия между #define и const int const * const foo(const int* param) const - разъясните значение квалификаторов
Что это bool operator== (const CLASS&) const; Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|