C 如何组合typedef和x27;具有实例创建的d结构?

C 如何组合typedef和x27;具有实例创建的d结构?,c,struct,typedef,C,Struct,Typedef,因此,您可以这样做来创建c1和c2作为struct Complex的实例: struct Complex { int real; int imag; } c1, c2; 您可以这样做来定义匿名结构: typedef struct { ... } Complex; 但是有什么办法可以同时做到这两件事吗?不,你不能typedef的语法为 typedef T type_ident; // T is type specified by the declaration specifi

因此,您可以这样做来创建
c1
c2
作为
struct Complex
的实例:

struct Complex {
    int real;
    int imag;
} c1, c2;
您可以这样做来定义匿名结构:

typedef struct { ... } Complex;

但是有什么办法可以同时做到这两件事吗?

不,你不能
typedef
的语法为

typedef T type_ident;  // T is type specified by the declaration specifiers  
这意味着
typedef T
之后的任何内容都将是类型名称,而不是该类型的实例。那么在

typedef struct { ... } Complex, c1, c2;   

Complex
c1
c2
都是类型为
struct{…}
的typedef名称,不可以
typedef
的语法为

typedef T type_ident;  // T is type specified by the declaration specifiers  
这意味着
typedef T
之后的任何内容都将是类型名称,而不是该类型的实例。那么在

typedef struct { ... } Complex, c1, c2;   

Complex
c1
c2
都是类型为
struct{…}
的typedef名称,不可以
typedef
的语法为

typedef T type_ident;  // T is type specified by the declaration specifiers  
这意味着
typedef T
之后的任何内容都将是类型名称,而不是该类型的实例。那么在

typedef struct { ... } Complex, c1, c2;   

Complex
c1
c2
都是类型为
struct{…}
的typedef名称,不可以
typedef
的语法为

typedef T type_ident;  // T is type specified by the declaration specifiers  
这意味着
typedef T
之后的任何内容都将是类型名称,而不是该类型的实例。那么在

typedef struct { ... } Complex, c1, c2;   
Complex
c1
c2
都是typedef名称,其类型为
struct{…}
,(PDF)表示这是不可能的,因为
typedef
只是类型说明符之一。这就好像你写了
charinta

(PDF)说这是不可能的,因为
typedef
只是类型说明符之一。这就好像你写了
charinta

(PDF)说这是不可能的,因为
typedef
只是类型说明符之一。这就好像你写了
charinta

(PDF)说这是不可能的,因为
typedef
只是类型说明符之一。这就好像你写了
charinta存储类说明符(
typedef
static
extern
等)始终适用于整个声明。与一个声明不能声明静态和非静态变量一样,
typedef
声明只能定义类型定义:

static int foo, bar; // Both foo and bar are static
typedef int c1, c2; // Both c1 and c2 are typedefs
存储类说明符(
typedef
static
extern
等)始终应用于整个声明。与一个声明不能声明静态和非静态变量一样,
typedef
声明只能定义类型定义:

static int foo, bar; // Both foo and bar are static
typedef int c1, c2; // Both c1 and c2 are typedefs
存储类说明符(
typedef
static
extern
等)始终应用于整个声明。与一个声明不能声明静态和非静态变量一样,
typedef
声明只能定义类型定义:

static int foo, bar; // Both foo and bar are static
typedef int c1, c2; // Both c1 and c2 are typedefs
存储类说明符(
typedef
static
extern
等)始终应用于整个声明。与一个声明不能声明静态和非静态变量一样,
typedef
声明只能定义类型定义:

static int foo, bar; // Both foo and bar are static
typedef int c1, c2; // Both c1 and c2 are typedefs

第一个表单声明一个结构标签;第二个声明一个typedef。主要区别在于,如果用户不一定知道第二个声明是一个结构,并且在声明它的实例时不使用关键字struct,那么第二个声明的类型就稍微抽象一些。另一方面,使用标记声明的结构,必须定义..因此不可能将c1和c2创建为struct Complex的实例

第一个表单声明一个结构标签;第二个声明一个typedef。主要区别在于,如果用户不一定知道第二个声明是一个结构,并且在声明它的实例时不使用关键字struct,那么第二个声明的类型就稍微抽象一些。另一方面,使用标记声明的结构,必须定义..因此不可能将c1和c2创建为struct Complex的实例

第一个表单声明一个结构标签;第二个声明一个typedef。主要区别在于,如果用户不一定知道第二个声明是一个结构,并且在声明它的实例时不使用关键字struct,那么第二个声明的类型就稍微抽象一些。另一方面,使用标记声明的结构,必须定义..因此不可能将c1和c2创建为struct Complex的实例

第一个表单声明一个结构标签;第二个声明一个typedef。主要区别在于,如果用户不一定知道第二个声明是一个结构,并且在声明它的实例时不使用关键字struct,那么第二个声明的类型就稍微抽象一些。另一方面,使用标记声明的结构,必须定义..因此不可能将c1和c2创建为struct Complex的实例

你为什么要这么做?是因为
c1
c2
都是全局变量吗?我不知道为什么…我想我现在只是在探索语法的局限性,所以我理解了可能的原因。如果这是可能的,那肯定是没有用的,至少这是我的观点,当然可能是错误的。你为什么要这么做?是因为
c1
c2
都是全局变量吗?我不知道为什么…我想我现在只是在探索语法的局限性,所以我理解了可能的原因。如果这是可能的,那肯定是没有用的,至少这是我的观点,当然可能是错误的。你为什么要这么做?是因为
c1
c2
都是全局变量吗?我不知道为什么……我想我现在只是在探索语法的局限性,所以我明白了什么是可能的。如果这是可能的,那肯定没用,至少这是我的观点