Форум программистов, компьютерный форум CyberForum.ru

Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию - C++

Восстановить пароль Регистрация
 
SuperHero
Заблокирован
18.07.2014, 16:08     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию #1
Бонжорно
Как можно накидать функцию, чтоб в качестве параметра по умолчанию передать ей название функции, откуда она вызывается? Нужно для лога.
Ну вот например (понятно дело не компильнётся, т.к. error C2457: '__FUNCTION__': predefined macro cannot appear outside of a function body)

C++
1
void SuperLog(std::string logMsg, std::string caller = __FUNCTION__);
В коде я хочу использовать свой лог с одним параметром, то есть с сообщением лога, так:
C++
1
SuperLog("Hello!");
Можно конечно сделать второй параметр не по умолчанию и хреначить туда при каждом вызове макрос, типа:
C++
1
SuperLog("Hello", __FUNCTION__);
, но это уж совсем не по фен шую, как бы автоматом вставлять в лог ну там название функции откуда был вызван, строку и т.д.

P.S.: для тех кто не понял, если этот макрос засунуть в функцию лога, он и высветит её название, а не той, октуда был вызван...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2014, 16:08     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию
Посмотрите здесь:

C++ Напишите функцию, которая принимает три числа в качестве параметров и возвращает их сумму.
C++ Написать функцию, которая транспонирует заданный в качестве параметра массива типа int
Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров C++
C++ Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров
C++ Передача параметров в функцию по умолчанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
18.07.2014, 16:15     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, а дефайны какие-нибудь не спасут? Что-нибудь в таком духе:

C++
1
#define SuperLog(x) SuperLog((x), __FUNCTION__)
SuperHero
Заблокирован
18.07.2014, 16:38  [ТС]     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию #3
Цитата Сообщение от Psilon Посмотреть сообщение
а дефайны какие-нибудь не спасут?
Чёрт подери, спасли! я тоже пробовал с дефайнами, но не совсем так Спасибо!

Добавлено через 10 минут
Стоп, а если у меня лог функция выглядит так:
C++
1
void Log(wchar_t *logMsg, ...);
можно ли как то дефайн написать с многоточием? Ну что много аргументов было, типа как в принт эфэ ?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.07.2014, 16:57     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, Что-нибудь вида
C++
1
#define Log(logMsg, ...) Log((logMsg), __FUNCTION__, __VA_ARGS__)
SuperHero
Заблокирован
18.07.2014, 17:10  [ТС]     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию #5
__VA_ARGS__, что то нет у меня такого макроса... что подключить?

Добавлено через 1 минуту
#include <stdarg.h>
Yandex
Объявления
18.07.2014, 17:10     Вставки препроцессорных макросов типа __FUNCTION__ в функцию в качестве параметров по умолчанию
Ответ Создать тему
Опции темы

Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru