如果我有這樣的函數宏:是一個變量總是用變量或常量定義的宏嗎?
void SomeFunc(int arg1, int arg2)
{
float value1, value2;
float range;
//#define MatrixBlock MyMatrix.block<arg1,arg2>(value1, value2)
//#define BlockRange MatrixBlock.block<arg2, range>
#define MatrixBlock MyMatrix.block(value1, value2, arg1, arg2)
#define BlockRange MatrixBlock.block(value1, value2, 0, range)
/* My code using the above macros */
// Are the following lines necessary? What will happen if I don't undefine the macro?
#undef MatrixBlock
#undef BlockRange
}
它會獲得新的ARG1和ARG2值每次還是會被固定在第一時間遇到宏?我需要#undef
嗎?如果我沒有編譯器看到的代碼之前#undef
小號
你是什麼意思「每次」?這是否在你希望包含多次的頭文件中定義這個函數的不同版本?或者你是否希望每次調用函數時都實例化不同的模板(這是不可能的)?或者是其他東西? – 2011-04-27 14:22:04
@Mike:對不起,我是從記憶中打字。那裏不應該使用模板。我已經註釋了錯誤的代碼並添加了正確的版本 – Samaursa 2011-04-27 15:50:54