高分在线等,我定义了一个字符串,它与#define定义的宏名相同,请问如何取得我定义的字符串对应的宏的值?具体看代码先有定义:
#define MY_TEST 100我现在只有如下同名字符串,但是我想通过strTest获得值100,如果同名的宏(MY_TEST)不存在,只返回-1,有没有简单的方法来实现?
char strTest[] = MY_TEST;
#define MY_TEST 100我现在只有如下同名字符串,但是我想通过strTest获得值100,如果同名的宏(MY_TEST)不存在,只返回-1,有没有简单的方法来实现?
char strTest[] = MY_TEST;
char strTest[] = MY_TEST;--#ifndef MY_TEST
char strTest[0] = -1;
#else
char strTest[0] = MY_TEST;
#endif
#define MY_TEST 100 #ifndef MY_TEST
const int my_test = -1;
#else
const int my_test = MY_TEST;char strTest[] = my_test;
...
and so on
#define CALLMYFUNC(FunName) FunName(参数表);
借LZ的光,顺便问下有没有高手能实现这样的宏定义,呵呵!!!!!!!
{
cCompl x, y;
switch (tolower(*p))
{
case 'a':
FX("abs(", 4, 0, return abs(x););
FX("asin(", 5, 0, if(gra) return asin(x) * 360 / (2 * PI); return asin(x););
FX("acos(", 5, 0, if(gra) return acos(x) * 360 / (2 * PI); return acos(x););
FX("atan(", 5, 0, if(gra) return atan(x) * 360 / (2 * PI); return atan(x););
#define "MY_TEST" 100
或者想找到一个宠定义,我们假定是这样:
#define TO_INT("MY_TEST") 100;
也就是想把一个常量字符串通过宏来直接转化为一个整数值;
效果这样:
int iv=TO_INT("MY_TEST");
如果定义了宏#define MY_TEST 100,则iv==100;如果没有定义宏MY_TEST,则iv==-1;
甚至是通过定义一个字符串变量来直接获得整型值
char strTest[]="MY_TEST";
int iv=TO_INT(strTest);
同样如果定义了宏#define MY_TEST 100,则iv==100,否则iv==-1;
说白了,你想在编译期实现字符串下标数组,或者map的功能.
不知道我这样理解对不对?
我个人感觉有点不可能!!
#ifndef MY_TEST
temp=-1;
#else
temp = MY_TEST;
#endif iLength=sprintf(buff,"temp=%i",temp);
TextOut(hdc,0,0,buff,iLength);