setjmp()應該將包括「返回地址」和「堆棧指針」的寄存器保存到「jmp_buf」中。當我用glibc編譯(包括gcc和clang)並在x86_64下調試以下程序時,我無法理解「jmp_buf」中的內容以及「返回地址」和「堆棧指針」位於「jmp_buf」中。 #include <stdio.h>
#include <setjmp.h>
int main()
{
int i;
嘗試在也構建爲C++的C代碼庫上顯示一些警告級別。我給了Visual Studio一個鏡頭(出於某種原因)。 儘管沒有看到任何相關的析構函數,但仍發現有關setjmp交互的警告。所以我做了試驗: #include <setjmp.h>
struct X { int y; };
int main() {
struct X x;
jmp_buf buf;
if
我試圖用setjmp()和longjmp(),以使c語言像fibonacci生成序列(即使用yield關鍵字實現在python): #include <setjmp.h>
#include <stdio.h>
jmp_buf mainTask, childTask;
void child(void);
int main(void) {
long i = 1;
if (