이 섹션에서는 C 언어의 매크로와 함수의 차이점을 살펴보겠습니다. 매크로는 전처리됩니다. 즉, 모든 매크로가 컴파일 타임에 전처리됩니다. 함수는 전처리되지 않고 컴파일됩니다.
매크로에서는 유형 검사가 수행되지 않으므로 다양한 입력 유형에 문제가 발생할 수 있습니다. 기능을 사용하면 이런 일이 발생하지 않습니다. 또한 매크로 입력이 올바르게 유지되지 않으면 잘못된 결과가 발생할 수 있습니다. 질문이 있는 경우 다음 절차를 검토하세요.
#include <stdio.h> #define SQUARE(x) x * x int sqr(int x) { return x*x; } main() { printf("Use of sqr(). The value of sqr(3+2): %d</p><p>", sqr(3+2)); printf("Use of SQUARE(). The value of SQUARE(3+2): %d", SQUARE(3+2)); }
Use of sqr(). The value of sqr(3+2): 25 Use of SQUARE(). The value of SQUARE(3+2): 11
함수와 매크로의 출력, 우리는 둘 다 동일한 작업을 수행하기를 원하지만 여기서는 출력 결과가 다른 것을 볼 수 있습니다. 주된 이유는 3 + 2를 함수 매개변수로 전달하면 5로 변환된 후 5 * 5 = 25로 계산되기 때문입니다. 매크로의 경우 3 + 2 * 3 + 2 = 3 + 6 + 2 = 11을 실행합니다.
따라서 다음 문제에는 매크로를 권장하지 않습니다.
유형 검사 없음
매크로는 단순히 대체이므로 디버그 모드가 기본값입니다.
매크로에는 네임스페이스가 없습니다. 따라서 한 섹션에 매크로가 정의되어 있으면 다른 섹션에서 사용할 수 있습니다.
매크로는 전처리 전에 추가하기 때문에 코드 길이가 늘어납니다.
매크로는 컴파일 타임 오류를 확인하지 않습니다.
위 내용은 C에서 매크로와 함수의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!