C не работает так - глобальная переменная выделяется во время загрузки и существует на протяжении всей продолжительности программы, независимо от поведения во время выполнения. Если вы действительно должны знать, была ли переменная «установлена», вы можете включить отдельный флаг:
int global_a;
int global_a_has_been_set = 0;
void f()
{
global_a = 10;
global_a_has_been_set = 1;
}
void elsewhere()
{
if (global_a_has_been_set != 0) { /* ... */ }
}
Если вы знаете, что ваша переменная может быть только неотрицательной, то вы можете альтернативно использовать специальное значение часового типа, например -1
, чтобы указать, что переменная еще не "установлена".
Скорее всего, вам следует переделать свой дизайн, чтобы вы уже знали другими способами, нужна ли вам переменная.