[回到版面]
回應模式
名 稱
內 文
附加圖檔[] []
  • 可附加圖檔類型:GIF, JPG, JPEG, PNG, WEBM,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 3072 KB。
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 目前附加圖檔使用量大小: 175965 KB / 500000 KB
  • 回覆時程式碼縮排會被trim消掉,請善用[code][/code]標色或貼到ideone等網站
  • LaTeX記法可以用「$$」或「\( \)」包起來,例如「$\sum_{k=1}^{k=n} k^2 = \frac{n(n+1)(n+2)}{6}$」
  • 投稿時請點擊畫像認證後,再按下 [送出] 按鈕提交。
  • 鬧板、攻擊性發言、煽動性發言請無視(回應者也無視),並使用del或在貓管理部向管理員回報。
  • 新介面尚處於測試階段,如果有任何問題可以向管理員或於程設交流版反映。

檔名:1553254108412.jpg-(81 KB, 686x960)
81 KB
無題無名19/03/22(五)19:28:28 ID:t5rKxn2kNo.13117del
我又來問個基本的C++問題了
當你們要highlight一行程式碼時會怎麼做?
編譯期的報錯會由編譯器跟你講錯哪裡
但是執行期的錯誤呢?

這需求類似assert的行為
但是我不要它直接中斷程式
我希望是單純告知我在哪裡就好

我目前是這樣寫
#define ERROR_MESSAGE_HERE __FILE__,__LINE__

inline void highlight(const char *name,int number)
{std::cout<<"File: "<<name<<"_"<<" Line "<<number<<std::endl;}

哪裡有問題就安插個highlight(ERROR_MESSAGE_HERE);
直覺上我應該不需要這樣自己造輪子
這功能明明很實用啊
標準庫怎麼沒有?
無名19/03/22(五)19:56:51 ID:t5rKxn2kNo.13119del
https://stackoverflow.com/questions/37473/how-can-i-assert-without-using-abort
這篇下面的回覆也是各種DIY
滿滿的macro臭味
無名19/03/23(六)00:07:31 ID:A71kzypcNo.13120del
檔名:1553270851645.png-(411 KB, 900x900)
411 KB
原來C++沒有StackTrace嗎?也太慘了吧?
無名19/03/24(日)23:26:35 ID:YHrB7m0sNo.13123del
>>13120
標準庫沒有...你真的要的話可以用 boost::stacktrace 或者
Linux:
int backtrace(void **buffer, int size);

Windows:
USHORT WINAPI CaptureStackBackTrace(
_In_ ULONG FramesToSkip,
_In_ ULONG FramesToCapture,
_Out_ PVOID *BackTrace,
_Out_opt_ PULONG BackTraceHash
);
無名19/03/25(一)11:40:37 ID:yarQ8mUoNo.13125del
>>13123
這東西還真是微妙啊
我大多是下中斷點來追stack
不怎麼需要將它們印出來
但是如果遇到那種需要測試一段時間才能出現的bug
boost::stacktrace好像又變的好用了
無名19/03/25(一)19:42:27 ID:GxEQAKHYNo.13128del
檔名:1553514147953.png-(92 KB, 467x468)
92 KB
>>13125
俗話常說(好吧,新手應該無法體會)

【看的見的錯誤(紅字),都不算是錯誤,只能算是TODO】


【刪除文章】[]
刪除用密碼: