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

时间:2016-12-07 11:24:41

标签: c global extern

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

我已经将变量x和y定义为File1.c中的全局变量,但我不断得到分段错误。我该怎么办?

编辑: 这是代码:

#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;

1 个答案:

答案 0 :(得分:1)

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

你需要在

之后分配
typeof(df$old.la)

在继续之前检查NULL。