Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/137: Рейтинг темы: голосов - 137, средняя оценка - 4.81
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30

[C++] define как определение константы vs. макроса

09.08.2012, 08:09. Показов 29991. Ответов 370
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На всякий случай. Это не константа, а макрос

 Комментарий модератора 
Начало здесь: Директива препроцессора #if
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2012, 08:09
Ответы с готовыми решениями:

Как происходит формирование константы типа #define?
Подскажите, пожалуйста, как происходит формирование константы типа #define и почему использование такой константы в некоторых конструкциях...

Массив, константы и #define
Всем доброго дня! Сразу к делу. Есть большое желание иметь массив длиной в константу и саму эту константу для работы. Очевидно, что...

Define внутри макроса
Подкажите возможно ли написать макрос кот. создаст #define? например: #define MACRO(name) #define NAME name знаю, что напрямую...

370
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 16:36
Студворк — интернет-сервис помощи студентам
ForEveR, ты уже сам склоняешся к этому
Цитата Сообщение от ForEveR Посмотреть сообщение
Это может называться символической константой, но по сути это макрос.
напомню тебе, что компьютерный мир в массы принёс мелкософт и игнорировать его всё равно что говорить - нет я живу в России не на Земле как планете а именно в России, я тоже уже устал стучать по клаве поэтому направлю тебя в свой же пост 19 в эту фразу
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
вы рубите в постах только исключительно свою интерпритацию чего-то прочтённого в умной книге или ресурсе.
Не знаю попробую к тебе последний раз достучаться, к остальным не знаю
Смотри мелкософт говорит юзайте деф для объявления значимых имён для констант а также создания определённых правил (МАКРОСОВ). Посмотри структуру МАКРОСА в вики
DEFMACRO имя список_формальных_параметров тело
Понимаешь define N 5 не катит под это правило, допустим
N - имя
5 -список_формальных_параметров
тело пускай пустое
послушай какова будет отработка функции
C
1
2
void fun(int param)
{}
- да никакой - вот тоже и здесь define N 5 это объявление именованной константы а вот уже define N(x) x + 5 будет макросом
Ну пораскинь мозгами без тупого шапкозакидательства
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2012, 16:41
-=ЮрА=-, Смотри в 13-й пост про символические константы. https://www.cyberforum.ru/post3342623.html а потом в 19-й пост https://www.cyberforum.ru/post3342666.html на первый случай. Цитата из стандарта. Если ты сможешь интерпретировать выделенное жирным шрифтом как-то по другому - с удовольствием услышу твою версию, особенно, как ты интерпретируешь слово macro по-другому...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 16:42
А когда в хедере гайды пишем - тоже макрос
C
1
2
3
4
#ifndef MY_HEADER_H
#define MY_HEADER_H
//наполнение хедера
#endif
- тут вообще тогда MY_HEADER_H - у макроса только имя т.е. уже 100% под структуру не подходит имя список_формальных_параметров тело
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2012, 16:46
-=ЮрА=-,
C++
1
# define identifier replacement-list new-line
А теперь распишу пожалуй.
replacement-list:
pp-tokensopt
Где opt означает опционально (не обязательно).
new-line:
the new-line character
Я думаю это расшифровывать не нужно. А теперь думай, подходит #define MY_HEADER_H под описание макроса или нет.)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 16:57
ForEveR, я подбираю линк на стандарт чтобы исчерпывающе ответить, так что уж подожди (PS:Когда приводишь выжимки из чего-то то давай либо линк, либо пости что то типа УДК ISO или хотя бы тайтла документа т.д)....
0
Эксперт С++
 Аватар для nameless
342 / 306 / 36
Регистрация: 16.06.2009
Сообщений: 486
09.08.2012, 17:00
-=ЮрА=-, http://open-std.org/jtc1/sc22/... /n3376.pdf пункт 16.3
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
09.08.2012, 17:00
На, читай. Раздел 16.3 (361 страница).
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 17:21
Ну почитайте тогда

Не по теме:

PS:Кто тут такой умный поставил - мне тоже проминусовать?
С такими питикантропами вообще никаких разговоров...

Миниатюры
[C++] define как определение константы vs. макроса  
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2012, 17:26
-=ЮрА=-, А ты к чему это вообще?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef YURA
#define YURA
#endif
 
#if defined(YURA)
   #error defined
#endif
 
#ifdef YURA
   #error defined
#endif
 
int main()
{
}
http://liveworkspace.org/code/... 46a922b704
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 17:33
ForEveR, няка няка,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
#ifndef YURA
#define YURA
class MyMsg2ForEver
{
public:
    MyMsg2ForEver()
    {
        cout<<"FU** OFF..!\n";
    }
};
#endif
 
 
int main()
{
    MyMsg2ForEver ptr;
    return 0;
}
http://liveworkspace.org/code/... 0bb88a020f
я и знал что кроме как примитивных заминусовать у всех ответчиков аргументов не найдётся
А тебе лично ForEveR, посоветовал бы научиться хотябы писать для экзамплов, а если в срр-нике
C++
1
int main(){return 0;}
не няка будет?
0
09.08.2012, 17:39

Не по теме:

-=ЮрА=-, Я не понял? Ты о чем?) Ну вот уж для примеров если захочу буду писать return 0, если нет - не буду, так как обязательным это не является, то...)

0
09.08.2012, 17:44

Не по теме:

ForEveR, ты всё правильно понял, тебе именно моя отработка на ливвёркспейс
http://liveworkspace.org/code/... 0bb88a020f ;)

0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2012, 17:46
-=ЮрА=-, Я сути не понял. Если макрос не определен, определяем его и пишем класс, затем в мейне его используем... Ты чего доказать-то пытаешься? Что YURA не является макросом или что?
0
09.08.2012, 17:48

Не по теме:

прости прости ссылку не на тот код кинул
http://liveworkspace.org/code/... f4e9ee81b7

0
09.08.2012, 17:49

Не по теме:

-=ЮрА=-, И чего? Я сути не понимаю. Ты что доказать пытаешься? В этом коде YURA и ForEver являются макросами... И?

0
09.08.2012, 17:55

Не по теме:

ForEveR, перечитай топик с начала особенно линки на вики и мсдн, может прозреешь. И да, добро пожаловать в мой бан лист;)

0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2012, 17:56
-=ЮрА=-,

Не по теме:

Тебе же давали стандарт... Я смотрю много ты там вычитал.)

0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
09.08.2012, 18:01
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
А тебе лично ForEveR, посоветовал бы научиться хотябы писать для экзамплов, а если в срр-нике
C++
1
int main(){return 0;}
не няка будет?
Иди перечитай стандарт. В частности его часть про то, что будет, если не писать return из main.
0
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
09.08.2012, 18:01
-=ЮрА=-, что ты пытаешься всем доказать? Что макрос это не макрос, а константа? Приводя сомнительного рода цитаты из неофициальных источников, ни кого не убедишь. Поведение макроса предельно ясно описано в стандарте, примеров работы с ним - море. Выше уже писали, что define - макрос, эдакая конструкция, и константой никак быть не может! Мое личное мнение, что ты совершенно не компетентен обсуждать такие вопросы, так как следует тебе сначала подучить язык, понять его структуру, а уж потом лезть в холивары. Между прочим это уже не первый твой FAIL, где ты пытаешься убедить, что г*вно, вовсе не г*вно, а эдакий велосипед.
2
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2012, 19:44
Dekio, не надо меня тролить, это конечно же неофициальные источники
http://ru.wikipedia.org/wiki/Макрос
http://msdn.microsoft.com/en-u... s.80).aspx

и тебе тоже ~OhMyGodSoLong~
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Иди перечитай стандарт. В частности его часть про то, что будет, если не писать return из main.
- иди перечитай кто это написал
Цитата Сообщение от ForEveR Посмотреть сообщение
-=ЮрА=-, А ты к чему это вообще?
кстати там кое что другое было
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef YURA
#define YURA
#endif
 
#if defined(YURA)
   #error defined
#endif
 
#ifdef YURA
   #error defined
#endif
 
int main()
{
}
http://liveworkspace.org/code/... 46a922b704
и что ему ответили

А тебе лично ForEveR, посоветовал бы научиться хотябы писать для экзамплов, а если в срр-нике
int main(){return 0;}
не няка будет?
- и тут я подразумевал что написано было без инклудов. Выссказывание твоего друга 4-каЭвер по поводу того, что инт маин можно без ретюрна просто не хочу искать на форуме, но оно существует, так что разберись сначала кто что писал, а потом ляпай гадости!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2012, 19:44
Помогаю со студенческими работами здесь

Вывести значение макроса #define
Здравствуйте. Возникла проблема с #define. Нужно каким-нибудь способом вывести на экран значение макроса #define типа этого:#define...

[C++] Директива #define. В виде макроса определен шаблон функции.
Здравствуйте! Есть проблема и мне она непонятна! В программке присутствует директива #define в ней в виде макроса определен...

Как реализовать директиву #define для создания шаблона отпределения #define ?
Здравствуйте уважаемые. При написании программы появилась необходимость задать шаблон создания #define через #define (извините за...

Определение константы
Помогите составить определение следующих данных - константа pi = π = 3.14159265358 (12 значащих цифр)

Определение макроса элемента
Добрый вечер! Может вопрос я поставил нитак, просто в VBA Excel я первый раз, обычно имел дело только с языками типа С. Дело в том что у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
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
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru