Czy poprawnie rozbiłem program na pliki?

0

Witam,
czy ktoś mógłby sprawdzić, czy poprawnie podzieliłem program na moduły? Niby się kompiluje, ale wolałbym, żeby ktoś zerknął na to fachowym okiem
modul1.c:

#include <stdio.h>
#include "modul2.c"

int main(void){
	extern int n;
	
	scanf("%d", &n);
	
	printf("%d\n", roznica());
	
	return 0;
}

modul2.c:

#include "modul2.h"

int n;

int kwadratSumy(){
    int suma = 0;
    int q;
    for(q=1; q<=n; q++){
        suma += q;
    }
    return suma*suma;
}

int sumaKwadratow(){
    int to_return = 0;
    int q;
    for(q=1; q<=n; q++){
        to_return += q*q;
    }
    return to_return;
}

int roznica(){
    return kwadratSumy() - sumaKwadratow();
}

modul2.h:

int kwadratSumy();
int sumaKwadratow();
int roznica();

Z góry dziękuję :)

0
  1. Includuj pliki nagłówkowe (.h) a nie źródłowe (.c)
  2. Zamiast robić globalną zmienną n lepiej przekazuj ją przez funkcję roznica, a potem dalej do funkcji kwadratSumy i sumaKwadratow
0

Ad2. Miałem takie polecenie, żeby zmienna n była globalna.
Ad1. Czyli zamiast

#include "modul2.c"

powinienem dać

#include "modul2.h"

?
Niestety program nie che mi się skompilować;

/tmp/ccpf91Xs.o: In function main': modul1.c:(.text+0xa): undefined reference to n'
modul1.c:(.text+0x21): undefined reference to `roznica'
collect2: ld returned 1 exit status

0

Przestał się kompilować, bo masz w dwóch plikach deklarowane te same funkcje. Podejrzewam, że to C a nie C++ i zastosowanie funkcji inline nie wchodzi w grę, mam rację?

0

gcc modul1.c modul2.c

0

Wielkie dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1