#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;
}
Something About C++ Macro(a Macro to print macro)
最新推荐文章于 2024-02-15 00:00:00 发布