가능한 중복은 :
C Macros and use of arguments in parenthesesC 프로그래밍 매크로 곱셈
나는 매우 흥미로이 매크로 질문을 발견했다.
이 다음 코드는 매크로
#define MULT(x, y) x * y
로 정의 그리고 함수 호출 int z = MULT(3 + 2, 4 + 2);
로했을 경우. 원하는 출력은 3 + 2 = 5 및 4 + 2 = 6이고 5 * 6은 30이됩니다.
그러나 반환 된 출력은 13입니다. 3 + 2 * 4 + 2로 표시됩니다. 따라서 연산자의 우선 순위에 따라 2 * 4를 먼저 계산합니다.
수정 사항은 무엇입니까? 이와 같이 효율적인 작은 함수의 경우? 함수 정의 또는 매크로 사용? 이 시도
#define MULT(x, y) ((x)*(y))
많은 복제본 ... –
효율성을 어떻게 측정합니까? 코딩 시간, 실행 시간, 유지 보수성 ... –
아마 매크로가 더 효율적입니다. 옵티 마이저가 함수를 인라인하면 아마도 동등 할 것입니다. –