>백엔드 개발 >C++ >C에서 매크로와 함수의 차이점

C에서 매크로와 함수의 차이점

王林
王林앞으로
2023-08-30 23:49:061058검색

C에서 매크로와 함수의 차이점

이 섹션에서는 C 언어의 매크로와 함수의 차이점을 살펴보겠습니다. 매크로는 전처리됩니다. 즉, 모든 매크로가 컴파일 타임에 전처리됩니다. 함수는 전처리되지 않고 컴파일됩니다.

매크로에서는 유형 검사가 수행되지 않으므로 다양한 입력 유형에 문제가 발생할 수 있습니다. 기능을 사용하면 이런 일이 발생하지 않습니다. 또한 매크로 입력이 올바르게 유지되지 않으면 잘못된 결과가 발생할 수 있습니다. 질문이 있는 경우 다음 절차를 검토하세요.

Example

#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제