我有一個是做一些像Windows的C++程序:
改變標準輸出的一個C值++程序
FILE* pf = ...; *stdout = *pf; // stdout is defined in stdio.h
我在尋找,當你改變標準輸出的價值會發生什麼情況的說明文件句柄。這只是一種重定向標準輸出的方式?
-CR
我有一個是做一些像Windows的C++程序:
改變標準輸出的一個C值++程序
FILE* pf = ...; *stdout = *pf; // stdout is defined in stdio.h
我在尋找,當你改變標準輸出的價值會發生什麼情況的說明文件句柄。這只是一種重定向標準輸出的方式?
-CR
如果通過分配,而不是使用指定的工具改變stdout
(在C,freopen()
正如亞當羅森菲爾德說 - 推而廣之,在C++),那麼你會把自己暴露給各種債務。
cout
也將被重定向。pf
,那麼你應該承擔雙倍免費錯誤(崩潰)。乾淨地完成工作要好得多。
(演示代碼並不一定是寫的,或者甚至,在供應商的編碼隊中最有經驗的人的審查。如果它看起來可疑,可能是因爲它是可疑的。)
最重要的是,你調用**未定義的行爲**。 C標準非常清楚地表明,使用`FILE`代替原來的調用UB,我相信C++標準將與C一致。 – 2011-06-08 16:37:45
我想過關於在過去做這件事,從來沒有,因爲我還沒有找到一個好的答案 – warren 2008-12-17 21:51:48