小编Ale*_*eon的帖子

列出const和数组结构字段的初始化

刚开始使用微控制器进行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)

c++ gcc c++11

3
推荐指数
1
解决办法
57
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1