【发布时间】:2016-12-07 11:24:41
【问题描述】:
我是 C 编程新手,正在尝试编写代码,其中变量 x 和 y 的值取自 File1.c 主函数中的用户。文件中的所有其他函数都使用这些变量的值。我在头文件 Header.h 中使用了“extern”关键字来声明它,这个头文件也使用了用户输入的 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;
【问题讨论】:
-
请发布您的代码。另外,发布调用堆栈或发生段错误的位置。否则,很难根据您的描述想象代码并给出解决方案。此外,您可以相当肯定, extern 关键字不会导致您的段错误。 :)
-
当您按照 Jay 的建议发布违规代码时,请尝试将其设为 "short, self-contained, and compile-able",以便那些尝试回答的人可以快速找到根本原因。
-
在你知道 x 和 y 的值之后考虑分配内存。并且永远不要忽略 scanf() 的返回值。
-
谢谢。这解决了问题。我没有意识到这可能是个问题,并认为 extern 会是个问题。
-
EXTERN不是关键字,但extern是。