/ / Uso de la palabra clave "EXTERN" en el archivo de encabezado mientras que su definición en el archivo fuente - c, global, extern

Uso de la palabra clave "EXTERN" en el archivo de encabezado mientras que su definición en el archivo fuente - c, global, extern

Soy nuevo en la programación de C y estaba intentandoescriba un código en el que los valores de las variables x e y se tomen del usuario en la función principal de File1.c. Todas las demás funciones en el archivo utilizan el valor de estas variables. He utilizado la palabra clave "extern" para declararla en el archivo de encabezado Header.h, y este archivo de encabezado también hace uso de los valores de x e y introducidos por el usuario. Otro File2.c también hace uso de estas variables. Tanto File1.c como File2.c incluyen Header.h

He definido las variables xey como variables globales en File1.c pero constantemente obtengo fallas de segmentación. ¿Cómo debo proceder?

EDITAR: Aquí está el código:

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

Me sale la falla de segmentación en memcpy. He declarado las variables x, y en Header.h como sigue:

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

Respuestas

1 para la respuesta № 1

El problema es que tiene xey igual a 0 cuando está asignando la memoria y más tarde está haciendo estas memorias para copiar, esto provocará un bloqueo.

Necesitas asignar después

scanf("%d",&y);

También compruebe si hay NULL antes de continuar.