C에서 #define은 무엇입니까?


최상의 답변

#define은 C 언어의 전 처리기 문입니다.

# 접두사가 붙은 모든 문은 전 처리기입니다. 문.

1.

#define MAX\_STUDENTS 200

#define은 위에 표시된대로 매크로 상수 (모든 유형)를 선언합니다. 값이 코드에서 여러 자리를 사용하면 코드의 유지 관리가 쉬워집니다. MAX\_STUDENTS의 값을 변경해야하는 경우 여러 위치가 아닌 한 줄의 코드로만 변경하면됩니다.

이 방식의 단점은 디버거이며이 값을 인식하지 못합니다.

int arr [MAX\_STUDENTS];

아래와 같이 조건부 컴파일에서도 사용할 수 있습니다.

#define WINDOWS

#ifdef WINDOWS

..

.. code of Windows OS

..

#else

..

.. code of Linux OS

..

#endif

참고 : #undef를 사용하여 정의를 해제 할 수 있습니다.

2.

#define SQUARE (x) (x * x)

매크로 함수는 런타임 중에 함수를 호출하는 대신 전처리 기가 메서드 호출을 대체한다는 점을 제외하면 일반 함수와 같습니다.

장점은 함수 호출 오버 헤드가 없어서 실행이 더 빠르다는 것입니다.

SQUARE (2 + 3)

단점은 매크로 함수가 일반 함수처럼 작동하지 않는다는 것입니다. 예를 들어, 위의 매크로 호출 SQUARE (2 + 3)를 생각해 보면 잘못된 값 11이 발생하는데, 정상 함수는 25를 반환합니다.

크기가 큰 경우 매크로 함수 (일반 함수 대신)를 사용하는 것이 좋습니다. 위와 같이 한두 줄이며 부작용이 없습니다.

답변

#define은 C입니다. 전 처리기 지시문 매크로 를 정의하는 데 사용됩니다.

그것을 분석 해보자.

전 처리기 지시문은 프로그램 컴파일이 일어나기 전에 호출되는 프로그램 명령문입니다. 실제로는 # 문자는 전 처리기입니다. 여기에는 include drective도 포함됩니다. 전 처리기 지시문은 사용되는 일반 지침 또는 필수 데이터를 제공하는 데 사용됩니다. 프로그램 내부.

매크로는 이름이 부여 된 코드 블록입니다. 매크로의 값에 따라 달라집니다. 값이 200 인 AMOUNT라는 매크로를 정의했습니다. 이제 프로그램에서 AMOUNT라는 단어가 사용될 때마다 컴파일 전에 숫자 200으로 대체됩니다. 데이터가 실제로 내부에 저장되는 변수와 달리 매크로는 별칭 이름처럼 작동합니다.

#define 지시문의 구문은 다음과 같습니다.

#define MACRONAME value

OR

#define MACRONAME (expression)

매크로에는 숫자 및 문자 (따옴표 안에 있어야 함) 값을 할당 할 수 있습니다. 매크로는 다음과 같이 사용할 수 있습니다. 기타 모든 상수 변수.

#undef 지시문을 사용하여 매크로 정의를 해제 할 수도 있습니다. 구문은 다음과 같습니다.

#undef MACRONAME

//MACRONAME can no longer be used in the program

내 답변이 도움이 되었기를 바랍니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다