Поддерживает ли стандарт «C» что-то похожее на __func__
для имен аргументов функции?Имеет ли C функциональность __func__ для имен аргументов функции?
ответ
, если вы хотите быстро и грязный раствор для этой марки препроцессора макросы, как это ...
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
... и использовать его для своих функций верхних и нижних колонтитулов, как это (проверено с VS 2008):
#include <windows.h>
#define FUNCTION_HEADER(a) a { const char* __func__ = #a;
#define FUNCTION_FOOTER() }
FUNCTION_HEADER(int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd))
MessageBoxA(0, __func__, __func__, MB_OK);
return 0;
FUNCTION_FOOTER()
Это должно работать именно так, как вы хотите, но это уродливо.
Уродливо, но делает работу :-) – 2009-05-25 10:52:30
Нет, стандарт C99 имеет следующее:
6.10.8 Предопределенных имена макросов
Следующие макроимена определяются реализация:
__DATE__
__FILE__
__LINE__
__STDC__
__STDC_HOSTED__
__STDC_MB_MIGHT_NEQ_WC__
__STDC_VERSION__
__TIME__
Следующие макрокоманды условно определяются реализацией:
__STDC_IEC_559__
__STDC_IEC_559_COMPLEX__
__STDC_ISO_10646__
6.4.2.2 Предопределенные идентификаторы
Идентификатор
__func__
должен быть неявно объявляется переводчиком, как если бы, сразу же после открытия скобки каждого определения функции, декларация
static const char __func__[] = "function-name";
появилось, где function-name - имя лексически-enc потеря функции.63)
gcc добавляет extensions, как я думаю, другие компиляторы делают.
- 1. Проверка имен аргументов внутри функции
- 2. Предопределенные макросы для имени функции __func__
- 3. Использовать случаи идентификатора __func__ в C, C++?
- 4. Имеет ли NSIS функциональность eval?
- 5. Указание имен аргументов функции в lua
- 6. Возможно ли интроспекция аргументов функции в C?
- 7. Список всех имен аргументов функции (нет документа)
- 8. Эквивалент __func__ (от C) в Python
- 9. Можно ли изменить функциональность функции?
- 10. Функциональность функции scanf в c
- 11. Можно ли использовать __func__ в gcc 3.3+ по-старому? (C++)
- 12. __func__ локальная предопределенная переменная функции C++ 11, не будет компилироваться
- 13. C++ Передача аргументов функции
- 14. Печать имен отсутствующих аргументов функции в Ruby
- 15. C++ Является ли поведение деструктора стандартным для временных аргументов функции?
- 16. Сколько аргументов имеет main() в C/C++
- 17. Имеет ли RabbitMQ функциональность для работы с автономными целевыми узлами
- 18. Имеет ли Bluemix эластичную функциональность поиска?
- 19. Можете ли вы преобразовать __func__ в wchar_t [] во время компиляции?
- 20. неопределенных функции «» для имен полех входных аргументов типа «двойных»
- 21. слишком мало аргументов для функции C++
- 22. «слишком много аргументов для функции» в C
- 23. Слишком мало аргументов для ошибки функции? (C++)
- 24. многопоточность C++ передача аргументов функции
- 25. Назначение аргументов для функции
- 26. Использование пространства имен в Unity скрывает функциональность
- 27. Имеет ли JpaPollingChannelAdapter аналогичную функциональность для UpdateSql JdbcPollingChannelAdapter?
- 28. Имеет ли WordPress функциональность для создания нового субдомена?
- 29. Eclipse: восстановление содержимого для имен аргументов
- 30. Имеет ли функция C переопределения функции?
Вам нужно будет немного рассказать об этом ... – Stephan202
Я думаю, что он хочет спросить, есть ли у C какой-либо макрос, который расширяется до параметров функции, в которой он находится, а ответ - нет. – Blindy