C++ 匿名结构体
本文介绍了 C++ 中匿名结构的使用。
C++ 中的匿名结构体
C++ 不支持匿名结构体,因为 C 语言也不支持匿名结构,但与 C 不同,C++ 确实支持匿名联合。根据关于结构和联合的 ANSI C 和 C++ 标准:
- ANSI C++ 匿名联合:支持
- ANSI C++ 匿名结构:不支持
- ANSI C 匿名联合:支持
- ANSI C 匿名结构:不支持
C++ 不支持匿名结构体,因为 C 不支持它,这是兼容性所必需的。 C++ 中没有使用匿名结构,但它提供了一些替代方案。
例如,请参阅下面的代码。
struct DemoVector {
float v[3];
float &operator[] (int x) {
return v[x];
}
float &a() {
return v[0];
}
float &b() {
return v[1];
}
float &c() {
return v[2];
}
};
上面的代码为用户定义类型提供了类似于匿名结构的功能。 使用 C++ 中的联合可以完成类似的事情。
请参阅下面的代码。
union DemoVector {
struct { float a, b, c; } ;
float v[3] ;
};
现在 ISO C11、gcc 和 Apple 的 llvm 允许匿名结构,但 ISO C++11 不支持。
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。