Я прочитал, что если я хочу использовать глобальную переменную в другом файле C, я должен предшествовать тип данных с спецификатора доступа ехЬегп так:Могу ли я использовать «int» вместо «extern» int в другом файле?
File One File Two
int x, y; extern int x, y;
char ch; extern char ch;
int main(void) void func22(void)
{ {
/* ... */ x = y/10;
} }
void func1(void) void func23(void)
{ {
x = 123; y = 10;
} }
и по ошибке в файле двух я не 't объявлять x, y такими, какие они есть. Я объявил их int x
и int y
, и я жду, когда компилятор отобразит ошибку переопределения переменных x и y, но код работает без ошибок.
, например:
Файл Один
#include <stdio.h>
int global = 1000; /** declare global variable called
global **/
int main(){
print();
return 0;
}
Файл Два
int global; /** here I don't use the extern keyword **/
void print(void){
global = 100;
printf("\n global = %d",global);
return;
}
результат: global = 100
Программа скомпилирована и связана без ошибок
Так что мой вопрос: есть ли спецификатор extern
здесь?!
Нет ошибки компиляции –
@ArmiaWagdy: Правильно, получилось - вы * ожидали * ошибка компилятора (или ошибка компоновщика ?!), но не получили один ... –
ДА, так, можете ли вы помочь меня в этой проблеме ?! @KerrekSB –