gpt4 book ai didi

c - 定义全局变量来初始化结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:11 24 4
gpt4 key购买 nike

我正在尝试使用全局变量来存储文件中的 3 个值。当我运行我的项目时,这是我得到的错误:

error: variably modified ‘pkt’ at file scope
error: variably modified ‘num’ at file scope

这是我的代码:

config.h

#ifndef READCONFIG_CONFIG_H
#define READCONFIG_CONFIG_H

#include <stdio.h>

#define PATH "src/transferConfig.txt"

extern unsigned long int TIMEOUT_PKT;
extern int START_BUFFER_SIZE;
extern float PROBLOSS;
int getConfig(){
FILE *fp;
int n;
float p;
unsigned long int t;

if((fp = fopen(PATH,"rt")) != NULL) {
fscanf(fp, "N=%d\n p=%f\n T=%ld\n", &n, &p, &t);
fclose(fp);
TIMEOUT_PKT = t;
START_BUFFER_SIZE = n;
PROBLOSS = p;
}else{
TIMEOUT_PKT = 3000000;
START_BUFFER_SIZE = 15;
PROBLOSS = 0;
}
}

#endif //READCONFIG_CONFIG_H

window.h

typedef struct window{
packet* pkt[START_BUFFER_SIZE];
long num[START_BUFFER_SIZE];
}window

构建时出错

error: variably modified ‘pkt’ at file scope

error: variably modified ‘num’ at file scope

我该如何修复这个错误?

最佳答案

START_BUFFER_SIZE 在编译时是未知的,它不是常量,因为您可以为其赋值。可变大小数组需要动态内存分配。您需要在编译时知道数组大小才能使用静态数组。

关于c - 定义全局变量来初始化结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513488/

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