我想知道有没有办法在c,
中用字符串替换命令 例如,替换
foo()
{
if( strcmp( (i->name, j->name) > 0)
//do something
}
类似
foo(char *command)
{
if( strcmp(arg) > 0)
//do something
}
其中
arg = " i->name, j->name ";
这样我就可以轻松替换compering的参数,如果我想使用例如
arg = " i->surname, j->surname ";
我猜有些人喜欢向sql对象方法发送查询吗?
答案 0 :(得分:2)
您可以使用#define指令来执行此操作,
#define arg i->name, j->name
但我强烈建议你不要这样做。
答案 1 :(得分:0)
代码需要解析4个部分的命令字符串:i,j,name,surname
。
然后将它们映射到对象和成员
// sample code lacking error checking
void foo(char *command) {
char *object1name = strtok(command, ",->");
object *object1 = find_object_by_name(object1name);
char *member1name = strtok(NULL, ",->");
int offset1 = find_offset_by_name(member1name);
char *object2name = strtok(NULL, ",->");
object *object2 = find_object_by_name(object2name);
char *member2name = strtok(NULL, ",->");
int offset2 = find_offset_by_name(member2name);
if (strcmp((char*)object1 + offset1, (char*)object2 + offset2) > 0)
// do something
}
}