作者flypaper (一直飛)
看板C_and_CPP
標題[問題] 如何不讓printf轉成puts
時間Wed Apr 3 22:12:45 2019
通常 C compiler 會做類似下面的轉換
printf("hello world\n") => puts("hello world");
小弟我想問下gcc和clang分別該下什麼flag 才能阻止上面的轉換
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.222.49
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1554300768.A.91A.html
※ 編輯: flypaper (111.251.222.49), 04/03/2019 22:15:12
1F:推 Hazukashiine: XY problem? 04/03 22:30
事情來由如下:
我工作遇到一個問題,就是前人的程式寫了一堆printf()來debug。
但是那支我常常需要放好幾天或背景執行,我是無法一直盯著螢幕看的。
所以我試圖利用動態連結來改變原本printf()的行為
(
https://github.com/fakepaper56/print_to_log)
卻發生了我問的狀況。
3F:→ longlongint: 如果是我會用tee或是檔案重導印到檔案耶...... 04/04 00:05
4F:→ bibo9901: 硬要用這招的話,順便把puts改掉不就好了... 04/04 03:23
確實要改就全部改 畢竟當初搞不好有寫訊息是用puts()做的
5F:→ bibo9901: 其實gcc本身就有提供自訂printf 04/04 03:24
6F:→ bibo9901: -fno-builtin-printf 04/04 03:38
※ 編輯: flypaper (111.251.222.49), 04/04/2019 07:35:08
7F:推 s4300026: 改成fprintf,印到硬碟裡 04/05 23:52
8F:推 Astar5566: 就把puts順便hook掉啊 04/06 00:14
9F:→ Lipraxde: syscall 也順便啊>< 04/06 07:55
10F:推 annheilong: freopen 04/18 16:10