Listing GCC predefined macros, on AIX
想要知道在 AIX 上,GCC 有沒有 predefine 一些 macro,好讓我針對 PowerPC/I386、Win32/FreeBSD/Linux/AIX 等不同平台,修改程式片段,以達到 cross-platform 的需求。可是,GCC 的官方文件這麼說…
想要知道在 AIX 上,GCC 有沒有 predefine 一些 macro,好讓我針對 PowerPC/I386、Win32/FreeBSD/Linux/AIX 等不同平台,修改程式片段,以達到 cross-platform 的需求。可是,GCC 的官方文件這麼說…
沒有 peer review 的話,有些明顯的錯誤不一定會被抓出來;但即使有 peer review,某些明顯的錯誤,還是可能會不被承認。
今天在寫 code 用到 GetEnvironmentStrings(),雖然處在 UNICODE 環境下,但我希望使用 ANSI 版本,所以依照 generic-text-mapping 的慣例,直接呼叫 GetEnvironmentStringsA(),沒想到卻怎麼樣也找不到 function declaration。
蒙 othree 於 #happydesigner 開示,知道了怎樣在 Windows 的 console 視窗,也就是「命令提示字元」程式,使用 Consolas 這類漂亮的字形。
最近寫程式的時候,發現不同的 compiler,其 snprintf() 的行為不太一樣。
我們有一台很強大的機器,目前正在狂抽猛送地測試我們的程式。好東西要和大家分享,所以同事和我,分別用 remote desktop 各開了一個 session 進去跑程式。然後詭異的事情發生了……
除了對 GUI 程式偵錯以外,有時候,像我這次一樣,必須對一台不能夠灌任何開發環境的電腦偵錯,這個時候,就需要用到 remote debugging。以下簡單整理一下,如何利用 Visual C++ 6 進行 remote debugging。
本系列目前有四篇文章,建議依照以下順序閱讀:
wcfind - avoid find(1) into subversion meta directories
use grep(1) accompany with my wcfind via xargs(1)
Setting svn:keywords in many files simultaneously
再探 wcfind — 用 find2perl 實作
由於 CVS、Subversion 這類的 version control systems,通常會在 working copy 目錄下,建立如 CVS/、.svn/ 的 meta directories,使得一些 command-line 工具會水土不服。例如,grep 會連 .svn/ 目錄下的檔案都去尋找,不僅拖慢速度,更讓結果雜亂,難以使用。因此,很久以前,我參照了 Ben Reser 的作法,弄了一個 wcfind 給自己用。
可是,之前的 wcfind 是使用 Bourne Shell 實作,並依賴於 FreeBSD 下的 find [...]
本系列共有三篇文章,以及一篇補充資料,建議依照以下順序閱讀:
Race condition in C wrapper of mutex class (補充資料)
Implementing dprintf() with __VA_ARGS__
Implementing dprintf() without __VA_ARGS__
Implementing DFORMAT and DOUT (尚未完成)
在這篇《Implementing dprintf() with __VA_ARGS__》裡,簡介了如何利用 __VA_ARGS__ 做出好用的 dprintf(),以協助我們僅在測試版裡傾印偵錯訊息。然而,某些老舊但仍然十分活躍的 compilers,如 VC6,並沒有支援 __VA_ARGS__。因為通常來說,為了照顧既有的大量程式,以及一些政治問題,更換 compiler 有時是不可能的。所以我們最好還是來想想,怎樣在不支援 __VA_ARGS__ 的情況下,仍然將 dprintf() 實作出來。
仔細檢視 dprintf_v2() 與 dprintf_v3() 在 #define 時的差別,我們會發現,dprintf_v2() 其實並不是一個真正的 function-like macro,而僅僅只是把 dprintf_v2 這個「名字」給代換成 dprintf_v2_impl。於是,原本跟在後面,屬於 dprintf_v2 的參數,經過 preprocessor 處理之後,變成了跟在 dprintf_v2_impl 的後面。這樣的作法,除了之前提過的,在釋出版裡,剩下來的參數列,不一定有辦法被最佳化去掉之外,還有一個更大的問題就是,沒有辦法於呼叫 dprintf_v2() 時省略 __FILE__ [...]