我想知道,下面的代碼:C中的「goto」行爲:符號如何處理?
{
int i = 42;
goto end;
}
end:
什麼是符號我的狀態,當我們到達末:(我們會看到在調試器)?即使我們超出了範圍,它是否仍然存在?是否存在標準行爲還是依賴於編譯器?
爲了舉例,我們假設代碼是使用帶有調試符號的gcc編譯的。
輔助地,C++中的行爲是否相同?
謝謝。
我想知道,下面的代碼:C中的「goto」行爲:符號如何處理?
{
int i = 42;
goto end;
}
end:
什麼是符號我的狀態,當我們到達末:(我們會看到在調試器)?即使我們超出了範圍,它是否仍然存在?是否存在標準行爲還是依賴於編譯器?
爲了舉例,我們假設代碼是使用帶有調試符號的gcc編譯的。
輔助地,C++中的行爲是否相同?
謝謝。
在塊中聲明的變量只會在該塊中「存活」(不管你是否使用goto都沒關係)。
這種行爲在C++中是一樣的
所以我假設在C++中,RAII會被應用,驅逐艦會被調用,對吧? – Vultrao
是的,但基本類型除外 –
狀態是......不可見(超出範圍)。
什麼阻止你執行此代碼?你甚至可以用不同的優化標誌或不同的gcc版本來編譯它。 – aisbaa
如果你留有作用域 - 所有本地作業都被銷燬。它的範圍是以什麼方式留下並不重要。 – Sergio
@aisbaa執行此代碼如何幫助回答問題? – CompuChip