Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
5 / 5 / 2
Регистрация: 15.04.2016
Сообщений: 107

#ifdef . #endif возможно ли в одну строку

23.05.2016, 09:23. Показов 1677. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть желание сделать несколько сборок, для чего делаю:
C++
1
2
3
4
5
#define COMPILE_WHITH_DEBUG_LOGGING
 
#ifdef COMPILE_WHITH_DEBUG_LOGGING
  Logging->WriteLog(eLogLevel::LOG_LEVEL_DEBUG,eEventCategory::EVENT_CATEGORY_AUTHENTICATION,"Message");
#endif
Хотелось бы собрать эти три строки в одну с параметрами, что бы писать что то типа

C++
1
WRITE_LOG(DEBUG,AUTHENTICATION,"Message")
Возможно ли это?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2016, 09:23
Ответы с готовыми решениями:

Команды #ifndef #ifdef и #endif
Помогите разобраться с командами #ifndef #endif и #ifndef в книге все как то не понятно объяснено или же лучше если у кого то есть видео на...

Где отключать блоки {#ifdef . #endif} в решении из трех проектов?
Есть решение (не мое) из трех проектов: 1). Под инструкции процессора SSE2 2). Под инструкции видеокарт CUDA 3). Под инструкции...

Программа по выводу каждого слова в одну строку не работает, все выводит в одну строкк
Подскажите как доработать, только не надо пожалуйста писать код заново :( подскажите пожалуйста как доработать этот #include...

6
6 / 6 / 3
Регистрация: 19.05.2016
Сообщений: 26
23.05.2016, 09:36
C++
1
2
3
4
5
6
 
#ifdef COMPILE_WHITH_DEBUG_LOGGING
#define WRITE_LOG(level, category, msg) (Logging->WriteLog(level, category, msg))
#else
#define WRITE_LOG(level, category, msg)
#endif
0
5 / 5 / 2
Регистрация: 15.04.2016
Сообщений: 107
23.05.2016, 10:23  [ТС]
Т.е. получается, если полное логирование не включено, макрос определяется в пустоту? Супер. Спасибо

Добавлено через 13 минут
Описание
C++
1
2
3
4
5
6
7
8
    #define COMPILE_WHITH_DEBUG_LOGGING
 
    #ifdef COMPILE_WHITH_DEBUG_LOGGING
        #define WRITE_LOG(pLogLevel, pEventCategory, pModuleName, pMessage) \
            WriteLog(eLogLevel::pLogLevel, eEventCategory::pEventCategory, pModuleName, pMessage)
    #else
        #define WRITE_LOG(pLogLevel, pEventCategory, pModuleName, pMessage)
    #endif
Использование:
C++
1
a->WRITE_LOG(LOG_LEVEL_INFO,EVENT_CATEGORY_SYSTEM,"Module","Msg");
Ошибка компиляции:
E2219 Wrong number of arguments in call of macro 'WRITE_LOG'
Где я не правильно считаю параметры?
0
6 / 6 / 3
Регистрация: 19.05.2016
Сообщений: 26
23.05.2016, 12:50
Лучше передавать объект (a), как параметр макроса в таком случае.
PS
Можно и определить пустым метод WriteLog для случая без COMPILE_WHITH_DEBUG_LOGGING.
0
5 / 5 / 2
Регистрация: 15.04.2016
Сообщений: 107
23.05.2016, 14:49  [ТС]
C++
1
2
3
4
5
6
7
8
    #define COMPILE_WHITH_DEBUG_LOGGING
 
    #ifdef COMPILE_WHITH_DEBUG_LOGGING
        #define WRITE_LOG(pObject,pLogLevel,pEventCategory,pModuleName,pMessage) \
            pObject->WriteLog(eLogLevel::pLogLevel,eEventCategory::pEventCategory,pModuleName,pMessage)
    #else
        #define WRITE_LOG(pObject,pLogLevel, pEventCategory, pModuleName, pMessage)
    #endif
Та же ошибка.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
23.05.2016, 15:49
Цитата Сообщение от Taiphoon Посмотреть сообщение
Та же ошибка
При таком определении, как у тебя, и вызове:
C++
1
WRITE_LOG(a, LOG_LEVEL_INFO,EVENT_CATEGORY_SYSTEM,"Module","Msg");
нет никакой ошибки, как с определенной COMPILE_WHITH_DEBUG_LOGGING, так и без нее все корректно компилируется.
0
5 / 5 / 2
Регистрация: 15.04.2016
Сообщений: 107
23.05.2016, 16:05  [ТС]
Вопрос снят. Не тот файл был подключён, соответственно правил я одно, проверял другое. Всё отлично работает.
Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2016, 16:05
Помогаю со студенческими работами здесь

Определить, возможно ли строку преобразовать в число, и, если возможно, то в какое, целое или вещественное
Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью) — вывести 2; если строку...

Вывод текста в окно, перенос на следующую строку, скроллинг окна на одну строку
Есть код include 'emu8086.inc' data segment HEIGHT dw 1 WIDTH dw 1 WIN_HEIGHT db 1 ...

Удалить строку матрицы и передвинуть ее на одну строку вверх
Как удалить строку из таблицы и передвинуть ее на одну строку вверх?

Создать строку, состоящую из символов, которые входят как в одну, так и в другую строку (не string-ом)
Условие: Заданы две строки. Построить новую строку, состоящую из символов, которые входят как в одну, так и в другую строку Здесь я...

Как записать строку с кавычками в одну строку?
string s = "lol "123" "; ругается и говорит то что после lol должно быть ); как это всё записать в одну строку ? Добавлено через 16...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru