#토큰 없이 식별자 정의
다음 문장의 의미는 무엇입니까?
#define FAHAD
나는 다음과 같은 진술을 잘 알고 있습니다.
#define FAHAD 1
그러나 토큰이 없는 #defin 문은 무엇을 의미합니까?그것이 상수 정의와 비슷하다는 것입니까?
값이 없는 상수를 정의하는 것은 전처리기에 대한 플래그 역할을 하며 다음과 같이 사용할 수 있습니다.
#define MY_FLAG
#ifdef MY_FLAG
/* If we defined MY_FLAG, we want this to be compiled */
#else
/* We did not define MY_FLAG, we want this to be compiled instead */
#endif
라는 뜻입니다.FAHAD
정의되어 있습니다. 나중에 다음을 사용하여 정의 여부를 확인할 수 있습니다.
#ifdef FAHAD
//do something
#else
//something else
#endif
또는:
#ifndef FAHAD //if not defined
//do something
#endif
실제 사용 예는 플랫폼에서 함수 또는 헤더를 사용할 수 있는지 확인하는 것입니다. 일반적으로 빌드 시스템은 매크로를 정의하여 실제로 컴파일하기 전에 일부 함수 또는 헤더가 존재함을 나타냅니다. 예를 들어 이는 다음을 확인합니다.signal.h
사용 가능:
#ifdef HAVE_SIGNAL_H
# include <signal.h>
#endif/*HAVE_SIGNAL_H*/
일부 기능을 사용할 수 있는지 확인합니다.
#ifdef HAVE_SOME_FUNCTION
//use this function
#else
//else use another one
#endif
조금도#define
원래 식별자를 대체 토큰으로 바꿉니다.대체 토큰이 없는 경우 대체 토큰은 비어 있습니다.
#define DEF_A "some stuff"
#define DEF_B 42
#define DEF_C
printf("%s is %d\n", DEF_A, DEF_B DEF_C);
확장 대상:
printf("%s is %d\n", "some stuff", 42 );
사이에 간격을 뒀습니다.42
그리고.)
"아무것도"하지 않음을 나타내다DEF_C
최소한 언어적인 면에서는 전처리기의 출력은 토큰의 흐름에 불과합니다.(실제 컴파일러를 사용하면 일반적으로 전처리기 출력을 볼 수 있습니다.여기에 빈 공간이 있는지 여부는 실제 전처리기에 따라 달라집니다.GNU cpp의 경우 1개가 있습니다.)
지금까지의 다른 답변들과 마찬가지로, 당신은 다음과 같이 사용할 수 있습니다.#ifdef
식별자가 다음과 같았는지를 테스트합니다.#define
d. 다음과 같이 쓸 수도 있습니다.
#if defined(DEF_C)
예를 들어.이러한 검정은 확장이 비어 있더라도 양성(즉, 식별자가 정의됨)입니다.
#define FAHAD
이것은 컴파일러 플래그와 같은 역할을 할 것이고, 그 아래에서 일부 코드를 수행할 수 있습니다.이것은 컴파일러가 이 컴파일러 옵션 아래에 존재하는 코드를 컴파일하도록 지시할 것입니다.
#ifdef FAHAD
printf();
#else
/* NA */
#endif
언급URL : https://stackoverflow.com/questions/18074663/define-identifier-without-a-token
'code' 카테고리의 다른 글
오류 메시지 없이 PL/SQL 컴파일이 실패함 (0) | 2023.10.30 |
---|---|
PowerShell에서 Windows Credential Manager 액세스 (0) | 2023.10.30 |
팬더 하이퍼링크로 읽기_excel (0) | 2023.10.30 |
C에서 상수를 문장으로 사용할 수 있는 이유는 무엇입니까? (0) | 2023.10.30 |
_일부 필드에만 Enter 키를 사용하여 양식 제출을 사용하지 않도록 설정합니다. (0) | 2023.10.30 |