Hey I have question about extern I'm really confused. I think I have the general idea of how it works but I don't fully understand it. In all the examples I have looked at they have extern infront of the function prototype in the header file, but if I omit it in my header file, the program still works. The same thing happens if I have 2 .c files, if I declare a global variable in my main file, then have another file that uses that same variable shouldn't I have to use the extern keyword infront of my global variable in the other file? Cause when I omit it my compiler also does not complain. Im using gcc to compile.
Code:
/*********** main.c ************/
#include <stdio.h>
#include "addition.h"
int
main(void)
{
int number1, number2, result;
printf("Enter number: ");
scanf("%d", &number1);
printf("\nEnter number: ");
scanf("%d", &number2);
result = add(number1, number2);
printf("%d", result);
return (0);
}
/******** addition.h ***********/
/*** If i get rid of extern it still works, why? */
/*extern*/ int add(int num1, int num2);
/********** addition.c ***********/
int
add(int num1, int num2)
{
return (num1 + num2);
}
Also if I have like say two .c files, the program still works if I remove the extern keyword infront of the variable x. Copied this from another post.
Code:
/* display.c */
#include <stdio.h>
/** If I remove extern and just say int x; it still
/* works, why? */
extern int x;
void display( void )
{
printf( "%d\n", x );
}
/* main.c */
int x;
int main( void )
{
x = 5;
display();
return 0;
}
Any help would be great, confused as to why when I remove the extern keyword the program still works and I get no errors