나는 C에서 인텔리 일하고, 우리는 어떤 방법으로이 작업을 수행 할 수 있는지 궁금 :매크로
#define OPERATION(operator) 1 (operator) 3
을하고
// Some code (those are exemples)
a = OPERATION(+);
a = OPERATION(==);
// Some more code
감사처럼 사용 당신이 대답을 위해
내가 작업하고있는 코드는이 코드를 개선하여 매트릭스를 통해 연산을 시도합니다. 나는 아직도 그 일을하고있다. 미래에는 Duff의 장치를 외부에서도 사용하려고했습니다.
#define MATRIX_OPERATION(ans,a,b,width,height,eqOp,op) int y, n, orig = ((height) + 9)/10, swControl = (height)%10; \
for(int x=0; x<(width); x++){ \
y = 0; \
n = orig; \
switch (swControl){ \
case 0: do { (ans) (eqOp) (b) (op) (a); \
case 9: (ans) (eqOp) (b) (op) (a); \
case 8: (ans) (eqOp) (b) (op) (a); \
case 7: (ans) (eqOp) (b) (op) (a); \
case 6: (ans) (eqOp) (b) (op) (a); \
case 5: (ans) (eqOp) (b) (op) (a); \
case 4: (ans) (eqOp) (b) (op) (a); \
case 3: (ans) (eqOp) (b) (op) (a); \
case 2: (ans) (eqOp) (b) (op) (a); \
case 1: (ans) (eqOp) (b) (op) (a); \
} while (--n); \
}}
그리고 '1 + 3'보다 짧습니다. 매크로가 너무 복잡해지면 코드가 흐려지고 유지 관리가 어려워집니다. 또한 – Olaf
1, 3은 무엇입니까? 방법? –
나는 단순화 된 코드를 보여주고 있습니다. 일부 행렬 연산을 사용하여 더프의 장치를 만들려고합니다. 모든 함수에서 동일한 코드가 반복되며 연산자 만 다릅니다. 매크로를 사용하여 동시에 모든 기능을 향상시키고 싶습니다. (하나와 3은 숫자 일뿐입니다) – Skrime