Something About C++ Macro(a Macro to print macro)

#include <iostream>
#include <string>

#ifdef _MSC_VER
#pragma warning(once:4996)
#endif

#define PRINT_MACRO_( x,...) #x #__VA_ARGS__
#define PRINT_MACRO( x ) PRINT_MACRO_( x )

#define MACRO_GET_VALUE(szParam)                           \
	{                                                      \
		memset(szValue, 0, sizeof(szValue));               \
		pszDot = strchr(pszBegin, '|');                    \
		if (pszDot == NULL)                                \
			strncpy(szValue, pszBegin, sizeof(szValue)-1); \
		else                                               \
		{                                                  \
			*pszDot = 0;                                   \
			strncpy(szValue, pszBegin, sizeof(szValue)-1); \
			pszBegin = pszDot + 1;                         \
		}                                                  \
			strncpy(szParam, szValue, sizeof(szParam)-1);  \
	}

int main()
{
	char szCJRQ[32] = {0};
	char szCJSJ[32] = {0};
	char szGDDM[32] = {0};
	char szZQDM[32] = {0};
	char szMMBZ[32] = {0};
	char szCJJG[32] = {0};
	char szCJSL[32] = {0};
	char szCJHM[32] = {0};
	char szHTXH[32] = {0};
	char szHBLX[32] = {0};
	char szJLXH[32] = {0};
	char szCWDM[32] = {0};

	char szValue[32] = {0};
	char *pszDot = NULL;
	char pszBuff[1024] = {0};
	_snprintf(pszBuff, sizeof(pszBuff) - 1, "20100901|105612|A172454682|600446|B|11.23|200|1|1234567890|CJ|1|0");
	char *pszBegin = pszBuff;

	MACRO_GET_VALUE(szCJRQ);
	MACRO_GET_VALUE(szCJSJ);
	MACRO_GET_VALUE(szGDDM);
	MACRO_GET_VALUE(szZQDM);
	MACRO_GET_VALUE(szMMBZ);
	MACRO_GET_VALUE(szCJJG);
	MACRO_GET_VALUE(szCJSL);
	MACRO_GET_VALUE(szCJHM);
	MACRO_GET_VALUE(szHTXH);
	MACRO_GET_VALUE(szHBLX);
	MACRO_GET_VALUE(szJLXH);
	MACRO_GET_VALUE(szCWDM);

	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCJRQ)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCJSJ)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szGDDM)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szZQDM)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szMMBZ)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCJJG)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCJSL)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCJHM)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szHTXH)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szHBLX)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szJLXH)) << std::endl;
	std::cout << PRINT_MACRO(MACRO_GET_VALUE(szCWDM)) << std::endl;

	std::cout << szCJRQ << std::endl;
	std::cout << szCJSJ << std::endl;
	std::cout << szGDDM << std::endl;
	std::cout << szZQDM << std::endl;
	std::cout << szMMBZ << std::endl;
	std::cout << szCJJG << std::endl;
	std::cout << szCJSL << std::endl;
	std::cout << szCJHM << std::endl;
	std::cout << szHTXH << std::endl;
	std::cout << szHBLX << std::endl;
	std::cout << szJLXH << std::endl;
	std::cout << szCWDM << std::endl;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值