У меня есть сомнения относительно инициализаторов C. Если пользователь инициализатор как:C инициализаторы во время выполнения
int a[2] = {1, 3};
в статической переменной памяти, я понимаю (думаю), что компилятор помещает эти данные автоматически в .data эльфа файла. Но когда мы делаем это внутри функции, чтобы инициализировать переменную, которая будет в стеке, что происходит? Компилятор генерирует код, который «заполняет» эту переменную во время выполнения? Если да, то почему мы не можем сделать что-то вроде:
struct mystruct {
int x;
int y;
};
int main(){
struct mystruct foo;
foo = {1, 2};
return 0;
}
Потому что вы можете завершить 'main' с'; ':-) – ameyCU
_Des компилятор сгенерировать код, который« заполняет »эту переменную во время выполнения? _ Почему бы вам не спросить у своего компилятора, что это делает? Скомпилируйте простую функцию и посмотрите на сборку, которую генерирует ваш компилятор. – mah
@ameyCU Нет, вы не можете. :-) – Downvoter