宏定义如何用一个参数代替两个参数

有一个宏定义:
SET(name, NAME) (name=NAME)
调用SET(a, A)后,结果是a=A ;
由于参数只是大小写的区别,有没有方法在定义宏时只指定一个参数,
使得调用SET(A)后,结果是a=A ; 如何定义宏?

http://stackoverflow.com/questions/3400386/can-you-capitalize-a-pasted-token-in-a-macro

个人认为不行。
name 和 NAME 只是代表两个不同的参数。调用时,不一定是 SET(a, A)!也可以是 SET(A, a) 或者 SET(a, aa)。
所谓的大小写,只是迷惑人的。

由于C/C++的预处理指令中没有大小写转换指令,所以你的想法是错误的,不可以的,想直接使用是不行的。
因为变量名仅仅只是一个标识,是一个内存地址,编译后,他的名称可能都和你源代码里定义的不一样了。

但对于非编译语言PHP、C#能实现。
这里有个C#的代码:
http://www.jb51.net/article/41056.htm