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

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

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

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

18.07.2014, 16:08. Просмотров 389. Ответов 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++
Написать функцию, которая возвращает минимальное из двух чисел, которые переданы в функцию в качестве параметров.

Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров - C++
Написать функцию, которая возвращает максимальное из двух чисел, которые переданы в функцию в качестве параметров.

Передача параметров в функцию по умолчанию - C++
Здравствуйте! Вот в этом коде: #include <iostream> #include <fstream> #include <string> using namespace std; struct Book...

Передача параметров в функцию по умолчанию - C++
Передача параметров в функцию по умолчанию. Написать встроенную функцию, которая считает площадь квадрата со стороной А, если известно, что...

Как передать в функцию в качестве параметров указатель на файл - C++
В общем есть функция (Copy_System_Files_To_New_System_Files), которая должна делать 4 раза одно и тоже действие, только с разными...

Напишите функцию, которая принимает три числа в качестве параметров и возвращает их сумму. - C++
Напишите функцию, которая принимает три числа в качестве параметров и возвращает их сумму. Пишите по-русски!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Psilon
Master of Orion
Эксперт .NET
5887 / 4784 / 633
Регистрация: 10.07.2011
Сообщений: 14,405
Записей в блоге: 5
Завершенные тесты: 4
18.07.2014, 16:15 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
SuperHero, а дефайны какие-нибудь не спасут? Что-нибудь в таком духе:

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

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

Добавлено через 1 минуту
#include <stdarg.h>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2014, 17:10
Привет! Вот еще темы с ответами:

Написать функцию, которая получает в качестве параметров адрес числового массива данных и его размер - C++
Функция выводит массив на экран. Как получить в качестве параметров адрес числового массива данных?как это написать?

Написать функцию, которая транспонирует заданный в качестве параметра массива типа int - C++
Написать функцию, которая транспонирует заданный в качестве параметра массива типа int (т.е. меняет местами равноудаленные от концов...

Реализовать функцию перемещения строк, принимающую в качестве параметров два вектора строк - C++
Подскажите насколько правильно решена задача. условие: Напишите функцию MoveStrings, которая принимает два вектора строк, source и...

Как написать функцию, которая бы автоматически определяла типа принимаемых параметров? - C++
Друзья! На самом деле примеров подобных функций много, я имею ввиду конструкторы объектов классов из библиотеки STL Но там принимаемые...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.07.2014, 17:10
Ответ Создать тему
Опции темы

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