我知道定义和使用 struct
的两种可能方式:
#1
struct person
{
char name[32];
int age;
};
struct person dmr = {"Dennis Ritchie", 70};
#2
typedef struct
{
char name[32];
int age;
} person;
person dmr = {"Dennis Ritchie", 70};
第一种方式的有趣特性是类型和变量可以具有相同的名称:
struct person person = {"Sam Persson", 50};
这是 C 中的惯用语吗?它保证在 C++ 中工作吗?或者是否有我应该注意的极端情况?
请注意,我对纯 C++ 答案不感兴趣(例如“使用 std::string
而不是 char[32]
”)。这是一个关于C/C++兼容性的问题。
最佳答案
struct
只有在 POD 时才在 C 和 C++ 之间兼容-s.
我倾向于编写如下代码:
struct person_st { char name[32]; int age; };
typedef struct person_st Person_t;
关于c++ - 编写同时适用于 C 和 C++ 的结构代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937907/