#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
//根据变量名strInfo 使用变量strInfoA
const string strInfo = "TestInfo";
const string strInfoA = "TestInfoA";
#define CONVERT(s) s##A
//转化宏 打印代码文件 行数
#define WIDEN2(x,y) "Line " #y " of file" x
#define WIDEN(x,y) WIDEN2(x , y) //转换宏
#define __WFILE__ WIDEN( __FILE__ , __LINE__ )
//输出int最大值
#define _STR(s) #s
#define STR(s) _STR(s) // 转换宏
// STR(INT_MAX) -> _STR(2147483647) -> #2147483647
#define A 2
#define _CONS(a,b) int(a##e##b)
#define CONS(a,b) _CONS(a,b) // 转换宏
// CONS(A, A) --> _CONS((2), (2)) --> int((2)e(2))
int main()
{
//1
cout<<strInfo<<" "<<CONVERT(strInfo)<<endl;
//2
const char *pwsz = WIDEN(__FILE__,__LINE__);
printf("%s/n",pwsz);
//3
cout<<_STR(INT_MAX)<< " "<<STR(INT_MAX)<<endl;
//4
cout<<CONS(A,A)<<endl;
return 0;
}