> 백엔드 개발 > C++ > 본문

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

王林
풀어 주다: 2023-08-30 23:49:06
앞으로
1045명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿