宏函数 参数列表是没有要求的,,,可是 传参的时候就会 很麻烦
比如 #define def(i) i=0 非要传入 def(i)这样的才可以,,可是这样参数不就固定死了,或者非要为Int 型 具体请看我代码,怎么把一个字符串变成int型呢,比如只有“ i”又想用这个宏函数怎么写
#include <string.h>
#include <stdio.h>
#define def(i) i=0
#define set(x,y) x=y
#define print(i) printf("%d",i)
static int def(i);
int main ()
{
char str[4][20] = {"def i\n","set i 1\n","set i i+1\n","print i\n"};
char s[2] = " ";
int j;
for(j=0; j<4; j++)
{
split(str[j],s);
}
}
void split(char *str ,char *s)
{
char *token;
int j=0;
char *name[5];
token = strtok(str, s);
while( token != NULL )
{
// printf("%s\n", token );
name[j]=token;
// printf("%s\n",name[i]);
token = strtok(NULL, s);
j++;
}
if(strcmp(name[0],"def")==0)
{
def(name[1]);//这里name[1]就是i 想替换成 def(i);
}
else if(strcmp(name[0],"set")==0)
{
set(name[1],name[2]);//这里name[1] name[2]也就是i\n,i+1\n想替换 set(i,i+1);
}
else if(strcmp(name[0],"print")==0)
{
print(name[1]);//这里name[1] 就是一个字符串i\n 想替换 成 print(i);
}
}