C 編譯器錯誤資訊的Trick

2021-04-13 21:23:38 字數 975 閱讀 9857

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 拒絕訪問。網上搜了一下,很多人碰到這個問題...