可以用pas字符串代替多个参数

时间:2017-02-21 20:46:48

标签: c

我想知道有没有办法在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对象方法发送查询吗?

2 个答案:

答案 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
  }
}