【问题标题】:Wrong syntax for typedef with struct?带结构的 typedef 语法错误?
【发布时间】:2014-03-30 16:57:40
【问题描述】:

我在下面有以下代码。

typedef struct person Person;
    Person {
        char* name;
        int age;
    };

据我了解,typedef 会将“struct person”替换为 Person。所以在做struct的时候,就等于写了:

    struct person {
        char* name;
        int age;
    };

这种想法正确吗? 因为我收到错误,所以结构的第一行错误。

错误:预期标识符或“{”标记之前的“(” 此错误指的是以下行:Person {

感谢任何帮助。谢谢

【问题讨论】:

  • typedef 和宏不一样;它不能那样替代。
  • 好的,如果我有 "typedef struct person Person" ,我该如何制作 Person 结构?
  • typedef struct person { char *name; int age; } Person;
  • 这个答案在这个主题上有一些很好的背景:stackoverflow.com/questions/1675351/…

标签: c struct typedef


【解决方案1】:

这样做

typedef struct person Person;
struct person  {
        char* name;
        int age;
};

然后您可以将Person 用于struct 的所有用法

也不需要不同的大小写

typedef struct person person;

同样会做得很好。

【讨论】:

    【解决方案2】:

    做你想做的事情的一种方法是:

    struct person {
        char* name;
        int age;
    };
    typedef struct person Person;
    

    或者,如果您想在一条指令中完成此操作,您可以这样做:

    typedef struct person {
        char* name;
        int age;
    } Person;
    

    【讨论】:

      【解决方案3】:

      一种可能的方式如下:

      typedef struct {
              char* name;
              int age;
          } Person;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-24
        相关资源
        最近更新 更多