Я новичок в программировании на С и пытался написать код, в котором значения переменных x и y берутся у пользователя в основной функции File1 .c. Все остальные функции в файле используют значение этих переменных. Я использовал ключевое слово 'extern', чтобы объявить его в Header-файле Header.h, и этот заголовочный файл также использует значения x и y, введенные пользователем. Другой File2.c также использует эти переменные. И File1.c, и File2.c включают Header.hИспользование «EXTERN» ключевого слова в файле заголовка при его определении в исходном файле
Я определил переменные x и y как глобальные переменные в File1.c, но я постоянно получаю ошибки сегментации. Как мне продолжить?
EDIT: Вот код:
#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));
}
Я получаю ошибку сегментации при тетсре. Я предрек переменные х, у в header.h следующим образом:
#include <stdio.h>
extern int x;
extern int y;
Пожалуйста, внесите ваш код. Кроме того, разместите столбец или место, где происходит segfault. Кроме того, очень сложно представить код, основанный на вашем описании, и дать решение. Кроме того, вы можете быть уверены, ключевое слово extern не вызывает ваши ошибки seg. :) – Jay
И пока вы публикуете оскорбительный код, как рекомендует Джей, попробуйте сделать его [«коротким, автономным и компилируемым»] (http://sscce.org/), чтобы те, кто пытался ответить, могли быстро дойдете до основной причины. – ArjunShankar
Рассмотрите возможность выделения памяти * после * вы знаете значение x и y. И никогда не игнорируйте возвращаемое значение scanf(). –