字符串常量之前的语法错误

时间:2013-11-01 21:52:18

标签: c string

我看到“字符串常量在'testFunction(45,UP)'之前的语法错误,'”

#define UP   "UP\0"
#define DOWN "DOWN\0"

#define testFunction(intensity, direction) \
    { \
      .force        = intensity, \
      .direction    = direction, \
    }

struct configureObject {
  int   force;
  char direction[7];

};

static const struct configureObject configureFiles[] =
{
  testFunction(45, UP),
  testFunction(46, DOWN),
};

在main()

    printf("force: %d\n", configureFiles[0].force);
    printf("direction: %s\n", configureFiles[0].direction);        

    printf("force: %d\n", configureFiles[1].force);
    printf("direction: %s\n", configureFiles[1].direction); 

没有其他编译器提示。这个错误可能是什么原因? 谢谢。

1 个答案:

答案 0 :(得分:2)

问题是您在{} <}中使用direction来完成两件事:

.direction    = direction,

两者都被替换。

尝试:

#define testFunction(intensity, dir) \
    { \
      .force        = intensity, \
      .direction    = dir, \
    }

(这只是一个例子,可能是一个比dir更好的名字。)