Объявление переменной как статического в одном файле и объявление extern в другом файле - я думал, что это приведет к ошибке при связывании как внешняя переменная не будет отображаться ни в одном объекте, поскольку тот, который был объявлен в другом файле, был с классификатором static. Но каким-то образом компоновщик (renesas) не обнаружил ошибок и создал исполняемый файл.Две статические переменные с одним именем (два разных файла) и один из них один из них в любом другом файле
Если приведенная выше информация об использовании была правильной, что произойдет, если две переменные будут объявлены как статические в двух разных файлах, а другая в другом файле с объявлением extern? В этом случае две разные памяти будут созданы в двух разных объектах, но какая из них будет связана с другой переменной, была объявлена как extern в другом файле (так как оба имени переменной одинаковы)?
file1.c
static int test_var;
fn1()
{
test_var = 1;
}
file2.c
static int test_var;
fn2()
{
test_var = 2;
}
file3.c
extern int test_var;
fn3()
{
int x;
x = test_var;
}
Так что показать фактический код. –
@ H2CO3, обновленный код примера ... – Opener
Не существует определения для 'test_var', объявленного' extern', и нет определения для 'main'. Мой компоновщик помещает обе ошибки. Пожалуйста, покажите пример _complete_. –