gpt4 book ai didi

c - 初始化结构体的字段

转载 作者:行者123 更新时间:2023-12-04 11:51:10 25 4
gpt4 key购买 nike

我正在处理哈希表分配,并且在尝试使用宏值初始化结构变量时遇到意外错误。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "symTable.h"
#define DEFAULT_TABLE_SIZE 61
#define HASH_MULTIPLIER 65599

typedef struct Node
{
char *key;
int *value;
struct Node *next;
} Node_T;

typedef struct SymTable
{
Node_T **Table;
int tablesize = DEFAULT_TABLE_SIZE; //where I am getting my error
int counter = 1;
} *SymTable_T;

我得到的错误是

error: expected ':', ',', ';', '}' or '__attribute__' before '=' token

有人可以向我解释为什么它不接受我的宏值吗?

最佳答案

您尝试初始化struct 定义中的成员,该成员是类型1。请注意,这是变量定义,并且在运行时不会占用任何内存。您根本没有定义任何变量,因此无需初始化任何内容。

实际定义变量时,您可以使用 designated initializer list 执行类似的操作:

struct SymTable table = { .tablesize = DEFAULT_TABLE_SIZE, .counter = 1 };

但是,此功能仅自 C99 起可用(GCC 自 C90 起将其实现为不符合规范的扩展!)。另一种

struct SymTable table = { NULL, DEFAULT_TABLE_SIZE, 1 };

您需要知道成员的顺序每个成员的默认值。


1 感谢@M.M 的简洁措辞!

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com