01-sdef

#ifndef SDEF_H
#define SDEF_H

#define __RETURN_RET_IF(condition, ret, log) do { \
    if (condition) { \
        log("failure message: %s", #condition); \
        return (ret); \
    } \
} while(0)

#define __RETURN_IF(condition, log) do { \
    if (condition) { \
        log("failure message: %s", #condition); \
        return; \
    } \
} while(0)

#define __GOTO_EXIT_IF(condition, exit, log) do { \
    if (condition) { \
        log("failure message: %s", #condition); \
        goto exit; \
    } \
} while (0)
#endif

#define __BREAK_IF(condition) \
    if (condition) { \
        break; \
    }

#define __LOG_IF(x, log) do { \
    if (x) {           \
        log("failure message: %s", #x); \
    }                       \
} while (0)

#define _RETURN_RET_IF(condition, ret, log, fmt, args...) do { \
    if (condition) {        \
        log(fmt, ##args);   \
        return (ret);       \
    } \
} while(0)

#define _RETURN_IF(condition, log, fmt, args...) do { \
    if (condition) {        \
        log(fmt, ##args);   \
        return;             \
    } \
} while(0)

#define _GOTO_EXIT_IF(condition, exit, log, fmt, args...) do { \
    if (condition) {        \
        log(fmt, ##args);   \
        goto exit;          \
    } \
} while (0)

#define _BREAK_IF(condition, log, fmt, args...) \
    if (condition) {        \
        log(fmt, ##args);   \
        break;              \
    }

#define _LOG_IF(x, log, fmt, args...) do { \
    if (x) {                \
        log(fmt, ##args);   \
    }                       \
} while (0)

#include <stdio.h>
#define log(fmt, ...)                       printf("[%s] "fmt"\n", __FUNCTION__, ##__VA_ARGS__)
#define log_err(fmt, args...)               printf("[E][LOG]<%s %s %d> "fmt"\n", __builtin_strrchr(__FILE__, '\\') ? __builtin_strrchr(__FILE__, '\\') + 1 : __FILE__, __FUNCTION__, __LINE__, ##args)

#define RETURN_RET_IF(condition, ret)   _RETURN_RET_IF(condition, ret, log_err, "failure message: %s", #condition)
#define RETURN_IF(condition)            _RETURN_IF(condition, log_err, "failure message: %s", #condition)
#define GOTO_EXIT_IF(condition, exit)   _GOTO_EXIT_IF(condition, exit, log_err, "failure message: %s", #condition)
#define BREAK_IF(condition)             _BREAK_IF(condition, log_err, "failure message: %s", #condition)
#define LOGE_IF(x)                      _LOG_IF(x, log_err, "log_if: msg: %s", #x)
// #define XX_LOG_IF(x)                            __LOG_IF(x, XX_LOGE)
// #define XX_RETURN_RET_IF(condition, ret)        __RETURN_RET_IF(condition, ret, XX_LOGE)
// #define XX_RETURN_IF(condition)                 __RETURN_IF(condition, XX_LOGE)
// #define XX_GOTO_EXIT_IF(condition, exit)        __GOTO_EXIT_IF(condition, exit, XX_LOGE)
// #define XX_BREAK_IF(condition)                  __BREAK_IF(condition)
#endif /* SDEF_H */

 

posted @ 2025-09-07 22:00  乐观的知觉  阅读(4)  评论(0)    收藏  举报