c - 初始化常量结构

标签 c struct constants

我想在 Flash 中创建一个常量结构。此结构将由各种大小的元素组成,包括字符串数组、短裤、字节等。字符串应以空值终止,但可能不会完全填满为其分配的数组存储区域。下面显示的代码是我的,但是编译器给出了以下错误。

../Source/flash_constants.h:1025:33: error: expected ':', ',', ';', '}' or '__attribute__' before '=' token
   const unsigned char Reg00[32] = "My String 1";

const unsigned char Reg00[32] = "My String 1"; 是结构定义外的有效语句,但在结构定义内失败。

谢谢。

struct
{
  const unsigned char Reg00[32] = "My String 1";
  const unsigned char Reg01[32] = "My String 2";
  const unsigned char Reg02[32] = "My String 3";
  const unsigned short Reg03 = 0;
  const unsigned short Reg04 = 0;
} ModBusIDReg;

最佳答案

您不能在 C 中对结构进行内联初始化。

需要定义结构体,定义变量,然后初始化变量:

struct
{
  const unsigned char Reg00[32];
  const unsigned char Reg01[32];
  const unsigned char Reg02[32];
  const unsigned short Reg03;
  const unsigned short Reg04;
} const ModBusIDReg = {
    "My String 1",
    "My String 2",
    "My String 3",
    0,
    0
};

关于c - 初始化常量结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240479/

相关文章:

c - 在另一个动态分配的数组中释放一个动态分配的数组

c++ - const char[] 和 char[] 的区别

我们可以通过指针改变一个用const定义的对象的值吗?

C++ 基类调用已删除或无法访问的函数

c - 为什么我的解析函数返回不返回所有预期的标记?

c - 复制二进制文件时何时使用 int 与 char 作为缓冲区?

c - 是否允许在分配的内存区域中以非 sizeof 偏移量创建对象?

c++ - main.c :(. text+0x30): 对 `reciprocal' 的 undefined reference

C结构对齐和网络协议(protocol)头

Python struct calsize 与实际不同