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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SuperHero
Заблокирован
#1

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

18.07.2014, 16:08. Просмотров 364. Ответов 4
Метки нет (Все метки)

Бонжорно
Как можно накидать функцию, чтоб в качестве параметра по умолчанию передать ей название функции, откуда она вызывается? Нужно для лога.
Ну вот например (понятно дело не компильнётся, т.к. 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++ Применение матриц в качестве параметров функции
Написать функцию kvadr с переменным числом параметров, которая определяет количество чисел, являющихся точными квадратами (2, 4, 9, 16,. . . ) типа in C++
C++ Как передать в функцию в качестве параметров указатель на файл
C++ Функция в качестве аргумента другой функции по умолчанию
Написать функцию mult с переменным числом параметров, которая находит произведение чисел типа float C++
C++ Написать функцию с переменным числом параметров, находящую минимальное из чисел типа int
C++ Написать функцию, которая получает в качестве параметров адрес числового массива данных и его размер
C++ Создать функцию, возвращающую минимальный из трёх передаваемых в неё параметров любого (но одинакового) типа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5763 / 4711 / 622
Регистрация: 10.07.2011
Сообщений: 14,188
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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__ в функцию в качестве параметров по умолчанию
Ответ Создать тему
Опции темы

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