매크로 정의는 일반적으로 사용되는 전처리 명령으로, "식별자"를 사용하여 "대체 목록"의 내용을 나타냅니다. 식별자를 매크로 이름이라고 합니다. 전처리 과정에서 전처리기는 소스 프로그램의 모든 매크로 이름을 매크로 정의의 대체 목록에 있는 내용으로 바꿉니다.
두 가지 일반적인 매크로 정의, 즉 매개변수가 없는 매크로 정의와 매개변수가 있는 매크로 정의가 있습니다.
매크로 정의는 오류 방지, 코드 이식성 및 가독성 향상 등에 도움이 될 수 있습니다.
소프트웨어 개발 프로세스에는 일반적으로 사용되거나 일반적인 기능이나 코드 세그먼트가 있는 경우가 많습니다. 이러한 기능은 함수로 작성되거나 매크로 정의로 캡슐화될 수 있습니다. 그렇다면 함수나 매크로 정의를 사용하는 것이 더 낫습니까? 이를 위해서는 둘 사이에서 합리적인 선택을 해야 합니다.
두 숫자 또는 표현식의 크기를 비교하는 예를 살펴보겠습니다. 먼저 이를 매크로 정의로 작성합니다.
#define MAX( a, b) ( (a) > (b) (a) : (b) ) # 其次,把它用函数来实现: int max( int a, int b) { return (a > b a : b) }
분명히 두 가지 이유 때문에 이 작업을 완료하기 위해 함수를 사용하지 않을 것입니다. , 함수 호출은 추가 오버헤드를 가져옵니다. 스택 공간을 열고, 반환 주소를 기록하고, 형식 매개변수를 스택에 푸시하고, 함수에서 반환할 때 스택을 해제해야 합니다. 이러한 오버헤드는 코드 효율성을 감소시킬 뿐만 아니라 코드 양을 크게 증가시킵니다. 둘째, 함수의 매개변수는 특정 유형으로 선언되어야 합니다. 따라서 이는 적절한 유형의 표현식에만 사용할 수 있습니다. 두 부동 소수점 유형의 크기를 비교하려면 특히 부동 소수점 유형에 대한 비교 함수를 작성해야 합니다. 반대로 위의 매크로 정의는 정수, 긴 정수, 단일 부동 소수점 유형, 이중 부동 소수점 유형 및 ">" 연산자를 사용하여 값의 크기를 비교할 수 있는 모든 유형에 사용할 수 있습니다. , 매크로는 유형과 무관합니다.
함수 사용과 비교했을 때 매크로 사용의 단점은 매크로를 사용할 때마다 매크로 정의 코드의 복사본이 프로그램에 삽입된다는 것입니다. 매크로가 매우 짧지 않은 한 매크로를 사용하면 프로그램 길이가 크게 늘어날 수 있습니다.
위 내용은 C 언어에서 매크로 정의를 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!