http://www.dinkumware.com/exam/default.aspx)獲得我們感興趣的資訊(比如結構對齊資訊,複雜物件型別等等)
1、輸出巨集的內容
基本的思想就是利用c++中string literal不能作為模版引數的特性。通常編譯器會將string literal的內容也一併輸出。下面的code snippet顯示了如何輸出gcc的版本號。巨集f0和f1用於將巨集展開並轉換成對應的字串
template
char *>
class a
;#define f0(x) #x
#define f1(x) f0(x)
#define v1 f1(__gnuc__)
#define v2 f1(__gnuc_minor__)
#define v3 f1(__gnuc_patchlevel__)
int main()
2、輸出常數的數值
同樣,目前的c++標準不支援浮點數作為模版引數。通常編譯器會輸出浮點數的值以供參照,所以可以利用這個特性輸出浮點數的值。不過vc有個bug,當使用浮點數作為模版引數時,會自動隱式轉換成int,所以不會報錯(
下面展示另一種用於輸出整型數值的trick。
struct n
;template
class a
;int main()
3、輸出變數的型別
目前的標準還不支援decltype,所以為了檢視複雜物件的型別,可以使用下面的方法。
#include
using
namespace boost::lambda;
struct dummy {};
void fun(const dummy &);
int main()
編譯器錯誤資訊 CS0016
編譯器錯誤資訊 cs0016 未能寫入輸出檔案 c windows microsoft.net framework v2.0.50727 temporary asp.net files 安裝完 framework 3.0 之後,出現 不能訪問 c windows microsoft.net fram...
C C 編譯器 gcc 生成錯誤資訊
pedantic pedantic 能夠發現一些不符合 ansi iso c標準的 但不是全部。只有 ansi iso c語言標準中要求進行編譯器診斷的那些情況,才會被gcc發現並提出警告。gcc pedantic test.c o test wall 除了 pedantic 之外,gcc還有一些編...
編譯器錯誤資訊 CS0016
編譯器錯誤資訊 cs0016 未能寫入輸出檔案 d windows microsoft.net framework v1.1.4322 temporary asp.net files 5177u d087da43 c12930d8 9ze28k 8.dll 拒絕訪問。網上搜了一下,很多人碰到這個問題...