C_매개 변수 매크로 정의

3922 단어 C
C_매개 변수 매크로 정의
C 언어 는 매크로 가 인 자 를 가 질 수 있 도록 합 니 다.매크로 정의 에서 의 매개 변 수 는 형식 매개 변수 라 고 하고 매크로 호출 에서 의 매개 변 수 는 실제 매개 변수 라 고 합 니 다.
파 라 메 터 를 가 진 매크로 는 호출 에서 매크로 를 펼 쳐 야 할 뿐만 아니 라 실제 인삼 으로 형 삼 을 대체 해 야 합 니 다.
매크로 정의 가 있 는 일반 형식 은 #define ( ) 매크로 호출 의 일반적인 형식 은 매크로 이름 (실제 참조 표) 입 니 다.
예 를 들 면:
 #define M(y) y*y+3*y      /*   */

      ……

   k=M(5);                   /*   */

          ……

매크로 호출 시 형 삼 y 대신 실제 인삼 5 를 사용 합 니 다. 매크로 를 미리 처리 한 후의 문 구 는 다음 과 같 습 니 다.
​ k=5*5+3*5
#include 

#define MAX(a,b) (a>b)?a:b

void main()
{     
      int x, y, max;

      printf("input two numbers: ");

      scanf("%d %d", &x, &y);      
      max = MAX(x, y); // max = (x>y) ? x : y;

      printf("The max is %d

"
, max); }

인삼 이 있 는 매크로 정의 에 대해 다음 과 같은 문제 가 있 습 니 다.
1. 매크로 정의 에서 매크로 이름과 형 참 표 사이 에 빈 칸 이 있어 서 는 안 됩 니 다.
#define MAX(a,b) (a>b)?a:b#define MAX  (a,b)  (a>b)?a:b//      
  • 매크로 정의 에서 형식 매개 변 수 는 메모리 유닛 을 분배 하지 않 기 때문에 유형 정 의 를 할 필요 가 없습니다.매크로 호출 중의 실제 참 조 는 구체 적 인 값 이 있다.그것들 로 형 삼 을 대체 하려 면 반드시 유형 설명 을 해 야 한다.(example 01. c 참조)
  • 매크로 정의 에서 의 형 삼 은 식별 자 이 고 매크로 호출 에서 의 실 삼 은 표현 식 일 수 있 습 니 다.
  • #include 
    
    #define SAY(y) (y)
    
    void main()
    {      
          int i = 0;
          char say[] = {73, 32, 108, 111, 118, 101, 32, 102, 105, 115, 104, 99, 46, 99, 111, 109, 33, 0};
    
          while( say[i] )
          {
                say[i] = SAY(say[i]*1+1-1);
                i++;
          }
    
    
          printf("
    \t%s

    "
    , say); }
  • 매크로 정의 에서 문자열 안의 형 삼 은 실 수 를 피하 기 위해 괄호 로 묶 어야 합 니 다.상례 의 매크로 정의 에서 (y) * (y) 표현 식 의 y 는 모두 괄호 로 묶 기 때문에 결 과 는 정확 하 다.괄호 를 없 애 면 프로그램 을 다음 과 같은 형식 으로 바 꿉 니 다
  • .
    #include 
    
    #define SQ(y) (y)*(y)   // y*y  
    
    void main()
    {
          int a, sq;
    
          printf("input a number: ");
    
          scanf("%d", &a);
    
          sq = SQ(a+1); // sq = a+1 * a+1
    
          printf("sq = %d
    "
    , sq); }

    좋은 웹페이지 즐겨찾기