c - C89 中的结构初始化
问题描述
我只能初始化这个结构数组的第二个元素。我不能使用像指定初始化器这样的 c99 功能,那么如何初始化这个结构数组的第 0 个元素?
static uint8_t HEAP_P[32];
struct free_entry
{
uint8_t *ptr;
uint64_t size;
};
typedef struct free_entry free_entry_t;
static free_entry_t free_list[32] =
{
{HEAP_P, 64}, //i need to initialize 0-th element to: {ptr = HEAP_P, size = 32}
};
错误:free_entry 未定义。
但是当我这样做时:
static free_entry_t free_list[32] =
{
{0},
{HEAP_P, 64},
};
然后一切正常,除了我需要初始化第 0 个元素,而不是第 1 个元素。
解决方案
这个 typedef 不正确
typedef free_entry free_entry_t;
你必须写
typedef struct free_entry free_entry_t;
我认为这是错误的原因。
此代码编译成功
#include <stdio.h>
#include <stdint.h>
static uint8_t HEAP_P[32];
struct free_entry
{
uint8_t *ptr;
uint64_t size;
};
typedef struct free_entry free_entry_t;
static free_entry_t free_list[32] =
{
{HEAP_P, 64}, //i need to initialize 0-th element to: {ptr = HEAP_P, size = 32}
};
int main(void)
{
return 0;
}
推荐阅读
- r - 根据它们是否高于或低于某个阈值来更改矩阵中的值
- c++ - 这个布尔函数有什么问题?
- vb.net - VB.Net DataTable 添加行在添加时起作用 Try Catch ex As Exception
- javascript - 将 16 位 RGB 值转换为一个十进制值
- python-3.x - 为什么 Python 在 else 语句之后会返回错误信息?
- flutter - Flutter 使用 Provider 时出现“EditableText 上方不存在覆盖小部件”错误
- python - 一个页面中有很多画廊框,但只有第一个框可以工作 Django
- excel - 如何在 Excel 中动态调整计算范围
- c# - 自定义授权属性角色不起作用 web api 身份验证
- azure - 清除注销后在 Azure AD 中选择一个帐户