54 / 54 / 9
Регистрация: 09.11.2010
Сообщений: 120
|
|
1 | |
Различия между #define и const13.12.2010, 15:38. Показов 22058. Ответов 17
Метки нет (Все метки)
Собственно вопрос: в чем различия и что лучше использовать? Хотелось бы получить развернутый ответ со всеми "pros and cons".
0
|
13.12.2010, 15:38 | |
Ответы с готовыми решениями:
17
Const #define Define vs const Чем оличается define от const #define PI or static const float PI |
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
||||||
13.12.2010, 16:00 | 2 | |||||
#define N 10 или const int N = 10
#define - директива препроцессора, осуществляет замену в тексте программы на этапе компиляции, то есть N в тексте программы будет заменено на 10 еще до получения объектного кода. const int N = 10 - объявляем переменную, куда записываем значение 10, с запретом на изменение. Добавлено через 3 минуты Например пишем прогу для контроллера, на С. Для удобства её восприятия любым человеком, читающим программу:
Читайте! Там всё написано!
1
|
Каратель
|
|||||||||||
13.12.2010, 16:04 | 3 | ||||||||||
1
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
13.12.2010, 16:05 | 4 |
Разница элементарна:
когда пишешь на С++ дефайн нужно не использовать. когда пишешь на С дефайн приходится использовать.
0
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
13.12.2010, 16:24 | 5 |
0
|
54 / 54 / 9
Регистрация: 09.11.2010
Сообщений: 120
|
|
13.12.2010, 16:32 [ТС] | 6 |
Как я понимаю, значение define'а ведь вроде тоже нельзя изменить в теле программы, получается что никакой особой разницы между ними нет?
2 Maxwe11, хороший пример. Единственное, что не совсем ясно, так это четвертый комментарий. 2 slice, “нужно” не использовать или “можно” не использовать? Ведь принцип, в данном случае, один и тот же. PS Работаю в C++.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
13.12.2010, 16:42 | 8 | |||||
Слабо через const?
0
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
13.12.2010, 16:43 | 10 |
Как нет?!!!
define замена в тексте! Я привел пример для замены в тексте программы! Как вы это реализуете с помощью const? По моему для программиста разница огромна!
0
|
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
|
|
13.12.2010, 16:44 | 12 |
Как нет?!!!
define замена в тексте! Я привел пример для замены в тексте программы! Как вы это реализуете с помощью const? По моему для программиста разница огромна!
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.12.2010, 16:44 | 13 |
Maxwe11, #define n 4 - тоже макрос.
0
|
Freelance
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
|||||||||||
13.12.2010, 16:47 | 14 | ||||||||||
Под дерективой #define можно не только обявлять константы, но и писать небольшые функции(макросы).Пример(функция возврощяющая абсолютное значение выражения)
1
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
13.12.2010, 17:04 | 15 |
Кто нибудь может показать реальный пример, когда стандартные С++ средства не подходят, и приходится прибегать к богомерзкому define. Макросы естественно тоже не в тему, вместо них используют инлайн функции.
0
|
54 / 54 / 9
Регистрация: 09.11.2010
Сообщений: 120
|
|
13.12.2010, 17:05 [ТС] | 16 |
Всем спасибо за ответы. В данной теме меня интересовал #define только как инструмент для объявления константных значений.
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
13.12.2010, 19:06 | 17 | |||||
В C++ всегда следует отдавать предпочтение const. const это часть C++, и в отличии от #define подчиняется правилам языка(например "знает", что такое область видимости; её имя известно компилятору, в то время как от #define после препроцессирования останется только "магическое число").
На этапе компиляции все макросы уже раскрыты. В C++ нет никакого смысла писать подобные макросы, во-первых есть inline функции, во-вторых у подобых макросов имеются побочные эффекты, например:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.12.2010, 19:12 | 18 |
rangerx, Дык знаю. Я просто показал в чем отличия) Не говорили же что define имеется ввиду как представление константы.
0
|
13.12.2010, 19:12 | |
13.12.2010, 19:12 | |
Помогаю со студенческими работами здесь
18
#define и const В чем отличие const и define ? Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си) Разница между объявлениями const Person p1 и Person const p1 int const * const foo(const int* param) const - разъясните значение квалификаторов Различия между 81 80 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |