/ / Použitie kľúčového slova "EXTERN" v hlavičkovom súbore, zatiaľ čo jeho definícia v zdrojovom súbore - c, globálny, externý

Použitie kľúčového slova "EXTERN" v hlavičkovom súbore, zatiaľ čo jeho definícia v zdrojovom súbore - c, globálny, externý

Som nový na programovanie C a pokúšal sanapíšte kód, v ktorom sú hodnoty premenných x a y prevzaté od užívateľa v hlavnej funkcii File1.c. Všetky ostatné funkcie v súbore používajú hodnotu týchto premenných. Použil som externé kľúčové slovo na deklarovanie v hlavičkovom súbore Header.h a tento hlavičkový súbor tiež používa hodnoty x a y zadané používateľom. Iný súbor File2.c tiež používa tieto premenné. Súbor File1.c aj File2.c obsahujú Header.h

Mám definované premenné x a y ako globálne premenné v File1.c, ale neustále dostávam chyby segmentácie. Ako mám postupovať?

EDIT: Tu je kód:

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

Chyba segmentácie na stránke memcpy. Deklaroval som premenné x, y v Header.h nasledovne:

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

odpovede:

1 pre odpoveď č. 1

Problém je v tom, že pri prideľovaní pamäte máte hodnotu x a y, ktorá sa rovná 0, a neskôr túto pamäť vytvoríte na kopírovanie, dôjde k pádu.

Potrebujete alokovať po

scanf("%d",&y);

Pred pokračovaním skontrolujte aj hodnotu NULL.