__date____file____line____funcdname__
__stdc____time____timestamp__
使用方法:printf("%s %d %s",__date__,__line__,__file__);
unicode 使用方法:
#include
#define widen2(x) l ## x
#define widen(x) widen2(x)
#define __wfile__ widen(__file__)
wchar_t *pwsz = __wfile__;
ansi標準說明了五個預定義的巨集名。它們是:
__line__
__file__
__date__
__time__
__stdc__
c++中還定義了 __cplusplus
如果編譯器不是標準的,則可能僅支援以上巨集名中的幾個,或根本不支援。記住編譯程式也許還提供其它預定義的巨集名。
__line__ 及 __file__ 巨集指示,#line指令可以改變它的值,簡單的講,編譯時,它們包含程式的當前行數和檔名。
__date__ 巨集指令含有形式為月/日/年的串,表示原始檔被翻譯到**時的日期。
__time__ 巨集指令包含程式編譯的時間。時間用字串表示,其形式為: 分:秒
__stdc__ 巨集指令的意義是編譯時定義的。一般來講,如果__stdc__已經定義,編譯器將僅接受不包含任何非標準擴充套件的標準c/c++**。如果實現是標準的,則巨集__stdc__含有十進位制常量1。如果它含有任何其它數,則實現是非標準的。
__cplusplus 與標準c++一致的編譯器把它定義為乙個包含至少6為的數值。與標準c++不一致的編譯器將使用具有5位或更少的數值。
可以定義巨集,例如:
當定義了_debug,輸出資料資訊和所在檔案所在行
#ifdef _debug
#define debugmsg(msg,date) printf(msg);printf(「%d%d%d」,date,_line_,_file_)
#else
#define debugmsg(msg,date)
#endif
命令#line改變_line_ 與__file__的內容,它們是在編譯程式中預先定義的識別符號。
命令的基本形式如下:
#line number["filename"]
其中的數字為任何正整數,可選的檔名為任意有效檔案識別符號。
行號為源程式中當前行號,檔名為原始檔的名字。命令#line主要用於除錯及其它特殊應用。
例如,下面說明行計數從100開始;printf( )
語句顯示數102,因為它是語句#line 100後的第3行。
#line 100
*/#include
#line 100
int main()
C語言 設計printf除錯巨集
借除錯巨集的設計,梳理下c語言巨集的用法 嵌入式裝置基本會配置rs232串列埠作為除錯io介面,假設底層串列埠單位元組輸出函式為serial putchar 利用fputc 和fputs 重定向printf函式 void fputc int byte,file stream void fputs c...
c語言 除錯程式必備 c標準 巨集 除錯方法
c標準中指定了一些預定義的巨集,對於程式設計經常會用到。下面這個表中就是一些常常用到的預定義巨集。date 進行預處理的日期 mmm dd yyyy 形式的字串文字 file 代表當前源 檔名的字串文字 line 代表當前源 中的行號的整數常量 time 原始檔編譯時間,格式微 hh mm ss f...
用於除錯的巨集
在linux程式設計中,gdb是個不錯的除錯工具。但是當檔案數量上百,甚至上千之後,使用gdb除錯就是一場災難。因此在程式中加入合理的列印資訊,能更高效的定位到問題的所在。下面就是定義的巨集。分別是warning,info,error。利用了,file function line 變數。cpp vi...