[英]How to get a value of __LINE__ of another function (before calling that function)?
[英]Why does the next line of a function still execute despite calling another function before such line?
這是一個明顯的示例代碼:
int foo();
void bar();
bool flag = false;
int foo()
{
if(!flag) bar();
cout<<"Reached Here!"<<endl;
return 0;
}
void bar()
{
flag = true;
foo();
}
在這段代碼中, cout<<"Reached Here;"<<endl;
執行兩次。 但是,逐步模擬它並不同意這一點。 根據我的預期,它應該像這樣 go :
!flag
為真,調用bar()
bar()
,設置flag = true
foo()
!flag
現在是假的,我們就繼續下一行Reached Here
控制台如您所見,我期待cout<<"Reached Here;"<<endl;
只執行一次。 那么,為什么它會被執行兩次,我怎樣才能避免這種情況(除了用else
括住下一行)?
編輯:將foo()
更改為bar()
並將main()
更改為foo()
從函數返回時,從 function 調用之后的行繼續執行。 這就是回報的意思。
因此,實際的跟蹤是:
foo()
調用bar()
,看到flag = false
bar()
設置flag = true
bar()
調用 (2nd) foo()
foo()
跳過bar()
,看到flag = true
foo()
打印“到達這里!”foo()
將零返回到bar()
bar()
返回foo()
打印“到達這里!”foo()
將零返回給它的調用者
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.