Я обнаружил, что могу достичь желаемых результатов без использования extern (хотя я согласен с тем, что он дает читателю какой-то намек на переменную). В некоторых случаях использование extern давало нежелательные результаты.Является ли ключевое слово extern в C избыточным?
xyz.h
int i;
file1.c
#include "xyz.h"
....
i=10;
....
file2.c
#include "xyz.h"
main()
{
printf("i=%d\n",i);
}
Конечно, это был большой проект, сломал его вниз для простого понимания. С ключевым словом extern я не смог получить желаемые результаты. На самом деле, я получил ошибку компоновщика для переменной i с «внешним» подходом.
код с "экстерном" подход,
file1.c
int i;
main()
{
i=10;
}
file2.c
extern int i;
foo()
{
printf("i=%d\n",i);
}
Это дало ошибку компоновщика. Я просто хотел знать, почему это сработало в первом случае, а также практический случай, когда мы не можем сделать это, не используя ключевое слово «extern». Благодарю.
Во втором случае у вас есть две функции, называемые 'main'. –
http://port70.net/~nsz/c/c11/n1570.html#6.2.2 – Olaf
Извинения. file2.c does not have main() – Harsha