gpt4 book ai didi

c - 在头文件中使用 "EXTERN"关键字,而其定义在源文件中

转载 作者:行者123 更新时间:2023-11-30 20:22:00 25 4
gpt4 key购买 nike

我是 C 编程新手,正在尝试编写一段代码,其中变量 x 和 y 的值在 File1.c 的主函数中从用户处获取。文件中的所有其他函数都使用这些变量的值。我已使用“extern”关键字在头文件 Header.h 中声明它,并且该头文件还使用用户输入的 x 和 y 值。另一个 File2.c 也使用了这些变量。 File1.c 和 File2.c 都包含 Header.h

我已在 File1.c 中将变量 x 和 y 定义为全局变量,但我不断遇到段错误。我应该如何进行?

编辑:这是代码:

#include<stdio.h>
#include<Header.h>
int x,y;
int main()
{
uint16_t *Buffer_1 = (uint16_t *)malloc(sizeof(uint16_t) *x*y*256);
uint16_t *slice = (uint16_t *)malloc(sizeof(uint16_t)*x*y);
printf("Enter value of x: );
scanf("%d",&x);
printf("Enter value of y: );
scanf("%d",&y);
memcpy(slice,Buffer_1,x*y*sizeof(uint16_t));
}

我在 memcpy 处遇到段错误。我在 Header.h 中声明了变量 x,y,如下所示:

#include <stdio.h>
extern int x;
extern int y;

最佳答案

问题是,当您分配内存时,x和y等于0,然后您将这些内存用于复制,这将导致崩溃。

您需要在

之后分配
scanf("%d",&y);

在继续之前还要检查 NULL。

关于c - 在头文件中使用 "EXTERN"关键字,而其定义在源文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016218/

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