C Debug 巨集與簡易qDebug

2022-08-11 23:15:23 字數 1285 閱讀 4536

手動debug, 某些情況有用.

t(

int root = 0;

dfs(root);

)int age = 97;

v(age)

vector> tree(2);

tree[0] = ;

log() << "hello vector:" << tree << 1;

log() << "hello\n string:" << string("\n_n/") << 2;

try  line 4

done line 4

age = 97

hello vector: vector(vector(0, 1), vector()) 1

hello

string: "\n_n/" 2

#define t(f) cerr << "\ntry  line " << __line__ << endl;\

f;\cerr << "\ndone line " << __line__ << endl;

#define v(x) cerr << #x << " = " << x << endl;

class log

~log()

bool autoinsertspace() const

log& space(bool sp = true)

// string

log& operator<< (const string &s)

// vector

template log& operator<< (const vector&v)

(*this).space(initspace) << ")";

return (*this);

}// default

template log& operator<< (const t &x)

private:

void replace(string &str, const string &from, const string &to)

}bool m_space;

};

以上展示了向log()註冊新型別的一種方法, 即新增類函式. 也可以通過在類外過載《操作符的方式註冊. 注意, 無論哪種方法都要確保恢復space狀態.

例如:

struct time ;

log& operator<< (log &lg, const time &time)

巨集定義與巨集替換

一.c c 語言中使用巨集的主要目的主要有 3 個 1.提高 的可讀性 把用到的常量定義成有意義的名字 2.無需函式呼叫,執行效率高 對於一些簡單的操作,無需呼叫函式,雖然程式設計是強調模組化,但是函式呼叫時,需要保護現場和恢復現場。這些都需要耗時。對於複雜的操作來講,這些耗時可以不計,但是對於簡單...

巨集定義與巨集替換

一.c c 語言中使用巨集的主要目的主要有 3 個 1.提高 的可讀性 把用到的常量定義成有意義的名字 2.無需函式呼叫,執行效率高 對於一些簡單的操作,無需呼叫函式,雖然程式設計是強調模組化,但是函式呼叫時,需要保護現場和恢復現場。這些都需要耗時。對於複雜的操作來講,這些耗時可以不計,但是對於簡單...

巨集與125元

今年7月初,我作為課程設計的一名負責人,領導了乙個連我在內4人的開發團隊,開發了乙個簡易的 航班訂票系統 我定義了所需的資料結構,包括這樣乙個struct typedef struct passenger passenger,ppassenger 這之後每每要新建結點的時候,都得這麼寫 ppasse...