C语言宏定义

C语言宏定义,第1张

C语言宏定义

doit:
一些关于宏的高级定义记录,

#include

enum{
test0=0,
test1,
test2,
test3,
};
// 在宏定义中,使用 # 将参数转为字符串
#define TO_NAME_INDEX(X) #X,X

int main()
{
        printf("zyy.....%srn",TO_NAME_INDEX(test3));
}

out:
zyy@host-pc:~/zyy/$ ./main 
zyy.....test3
#include 
#include 

// 在宏定义中,使用 # 将参数转为字符串,使用 ## 来连接两个参数作为一个整体标识符。
#define STRING(x) #x
#define COMBINE(x, y) x##y

int main(int argc, char **argv)
{
    int x1 = 1;
    int x2 = 2;
    // STRING(x1) 将变成 "x1"
    // COMBINE(x, 1) 将变成 x1
    printf(STRING(x1) " = %dn", COMBINE(x, 1));
    printf(STRING(x2) " = %dn", COMBINE(x, 2));
    return 0;
}
#include
#define TO_NAME_INDEX(X) #X,X

enum{
	test0=0,
	test1,
	test2,
	test3,
	testmax,
};

struct name_to_index {
	char name [100];
	unsigned int index;
};

static struct name_to_index device_name_index[testmax] = {
	{TO_NAME_INDEX(test0)},
	{TO_NAME_INDEX(test1)},
	{TO_NAME_INDEX(test2)},
	{TO_NAME_INDEX(test3)},
};

static int find_index(struct name_to_index * table, int len, const char * name) {
	int ret = 0;
	int i;

	if(table == NULL || name == NULL)
	{
		ret = -1 ;
		goto done;
	}

	for(i=0;i					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5579367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存