刚开始使用微控制器进行C ++编程,我遇到了以下情况*:在始终保证具有固定值的结构上具有非静态const字段会很方便(对于每个实例,相同坚固)。
给定一个结构
struct S {
const uint8_t c; // Should always be 42
char v;
uint32_t arr[4];
}
Run Code Online (Sandbox Code Playgroud)
我想c成为一个常数,每次都保持不变。我希望能够使用括号初始化程序列表的便利性来设置v和arr的成员,例如
S some_var = {'v', { 0, 1, 2, 3 } };
由于我想c成为一个常数,因此,我的印象是,必须使用初始化列表进行设置c,例如S() : c(42) {},只要我不尝试也进行初始化arr,就可以正常工作。我迷失了清单的外观。使用C ++ 11可以做到吗?(如果这在C ++ 11中不可行,但在某些较新的标准中,也对答案很感兴趣。)
示例代码:
#include <stdio.h>
#include <stdint.h>
struct S {
const uint8_t c; // Should always be 42 on every instance
// of the struct due to hardware shenanigance
// (i.e. this struct …Run Code Online (Sandbox Code Playgroud)