栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言宏定义

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号