Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// Собственно сам макрос
#define dbg DbgFuncRet(__FILE__, __LINE__)
int main ()
{
// ....
dbg ("Test %d, %s, %f\n", 100, "test-test", 99.99f);
}
DbgFuncRet(__FILE__, __LINE__)("Test %d, %s, %f\n", 100, "test-test", 99.99f);#define LOG_DEBUG(...) Logger::write(Logger::Debug, __FILE__, __LINE__, Q_FUNC_INFO, ##__VA_ARGS__)
...
class Logger
{
...
static void write(LogLevel logLevel, const char* file, int line, const char* function, const char* message);
static QDebug write(LogLevel logLevel, const char* file, int line, const char* function);
...
}
LOG_DEBUG("Message 1");
LOG_DEBUG() << "Message 2" << "ok";
#if defined(__GNUC__) || defined(__GCCE__)
#define DLOG(x, args...) (isNiocoreLogEnabled? DOutDebugMessage(x, args): ((void)0))
#else
#define DLOG(x, ...) (isNiocoreLogEnabled? DOutDebugMessage(x, __VA_ARGS__): ((void)0))
#endif
// debug mode, -DEBUG
#ifdef EBUG
#define RED "\033[1;32;41m"
#define GREEN "\033[5;30;42m"
#define OLDCOLOR "\033[0;0;0m"
#define FNAME() fprintf(stderr, "\n%s (%s, line %d)\n", __func__, __FILE__, __LINE__)
#define DBG(...) do{fprintf(stderr, "%s (%s, line %d): ", __func__, __FILE__, __LINE__); \
fprintf(stderr, __VA_ARGS__); \
fprintf(stderr, "\n");} while(0)
#else
#define FNAME() do{}while(0)
#define DBG(...) do{}while(0)
#endif //EBUG
// locale.h
#define _LANG(_var, _ru, _en) char _var##ru[] = _ru;\
char _var##en[] = _en;\
char *_var[2] = {_var##ru, _var##en};
#define _L(x) (x[Lang])
unsigned char Lang = 1; // по умолчанию - английский, меняем на русский, если LC_MESSAGES==ru или HTTP_ACCEPT_LANGUAGE==ru
_LANG(_s_Name_, "Ваше имя", "Your name");
…
// file.c
printf("%s:<input ... >\n", _L(_s_Name_));
#define QUOTE_(WHAT) #WHAT
#define QUOTE(WHAT) QUOTE_(WHAT)
#define dbg(format, ...) printf("%s: "format, __FILE__":"QUOTE(__LINE__), ## __VA_ARGS__)
#define dbg(X) do { printf X; printf("File: %s:%s\n" __FILE__, __LINE__); } while(0)
dbg(("debugging is %s", debug? "on" : "off"))
Макросы с переменным числом параметров