C 宏中的#和##
程序员文章站
2024-03-22 10:28:28
...
RT,
#define FUNC(a) #a
#define FUNCS(a,b) a##b
第一个#a的作用是将字符a变成字符串,如下面例子中,将对应的版本号转换为字符串
#define VERSION_MAJOR 1
#define VERSION_MINOR 29
#define VERSION_PATCH 2
#define STRINGIFY(v) STRINGIFY_HELPER(v)
#define STRINGIFY_HELPER(v) #v //See Here
#define VERSION_STRING STRINGIFY(UV_VERSION_MAJOR) "." \
STRINGIFY(UV_VERSION_MINOR) "." \
STRINGIFY(UV_VERSION_PATCH)
const char* version_string(void) {
return VERSION_STRING;
}
第二个a##b的作用是将ab连成字符串
typedef struct {
char *task_name;
char *process_name;
int (*main)(void);
int is_helper;
int show_output;
int timeout;
} task_entry_t, bench_entry_t;
#define TEST_DECLARE(name) \
int run_test_##name(void); // See Here
#define TEST_ENTRY(name) \
{ #name, #name, &run_test_##name, 0, 0, 5000 },
上一篇: assert 断言