Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用「;“外部”;关键字在头文件中,而其定义在源文件中_C_Global_Extern - Fatal编程技术网

C 使用「;“外部”;关键字在头文件中,而其定义在源文件中

C 使用「;“外部”;关键字在头文件中,而其定义在源文件中,c,global,extern,C,Global,Extern,我是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&l

我是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));
 }
#包括
#包括
int x,y;
int main()
{
uint16*Buffer\u1=(uint16*t*)malloc(大小为(uint16*t)*x*y*256);
uint16_t*切片=(uint16_t*)malloc(大小为(uint16_t)*x*y);
printf(“输入x的值:);
scanf(“%d”和&x);
printf(“输入y的值:);
scanf(“%d”和“&y”);
memcpy(片,缓冲区1,x*y*sizeof(uint16\u t));
}
我在memcpy遇到了分段错误。我在Header.h中声明了变量x,y,如下所示:

#include <stdio.h>
extern int x;
extern int y;
#包括
外部INTX;
外部和内部;

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

您需要在以后分配

scanf("%d",&y);

在继续之前还要检查空值。

请发布您的代码。此外,张贴调用堆栈或发生SEGFULT的位置。否则,很难根据您的描述想象代码并给出解决方案。此外,您可以相当肯定,extern关键字不会导致seg故障。:)当你发布杰伊推荐的冒犯代码时,请尝试让那些试图回答的人很快找到根本原因。在知道X和Y的值后,考虑分配内存。永远不要忽略scanf()的返回值。谢谢。这就解决了问题。我没有意识到这可能是个问题,我认为extern会是个问题。
extern
不是一个关键词,但
extern
是。