我需要實現這樣的事情,但使用CMacro:CMacro和整數運算
int a = //some constant;
int x = //constant
int c = //constant
int y = a*x+b;
我已經試過這樣的:如果我用標誌-E
海合會
#define A 3
#define X 6
#define B 8
#define Y ((A)*(X) + (B))
然而,給我看3*6 + 8
。
是否有任何方法使用CMacro執行整數運算,在替換之前我的意思是?
我的目的是一樣的東西,只是一段代碼...:
#define func_impl(NY,NX,R) \
void func_#NY_#NX(int* y, int* x) { \ //x size NX, y size NY
int tmp[2*NX - R]; \
for(int i = 0; i < 2*NX - R; i++) tmp[i] = 0; \
//other processing operations... \
}
我知道這兩個NX,NY和R先驗的,儘管他們被其他程序產生的。所以基本上我想避免讓程序P1在可能的情況下生成太多的宏常量。
是否有一個原因,你爲什麼首先需要宏?爲什麼不能寫一個泛型函數,或者使用一個函數指針數組?生成函數的函數式宏幾乎肯定是任何已知編程問題的錯誤解決方案。 – Lundin
另外,這個'#define Y A * X + B'是一個常見的初學者錯誤,這反過來表明你現在應該完全遠離宏。 – Lundin
^^是的,直到你有更多的經驗。當你有經驗時,你會知道自己遠離宏。 –