반응형
토큰 결합 연산자의 정의와 종류
토큰 결합 연산자(##)는 전처리기에서 사용되며, 두 개의 토큰을 하나로 결합하는 역할을 합니다. 이 연산자는 매크로 정의에서 주로 사용되며, 매크로를 더 유연하게 사용할 수 있도록 합니다. 그리고 코드의 재사용성과 가독성을 향상시킵니다.
토큰 결합 연산자의 정의:
토큰 결합 연산자는 다음과 같이 정의됩니다. 정의에서 ##는 두 개의 토큰을 결합하는 연산자입니다.
#define CONCATENATE(x, y) x##y
토큰 결합 연산자의 종류:
Simple Token Concatenation (단순 토큰 연결):
- 가장 기본적인 형태의 토큰 결합입니다. 두 개의 토큰을 그대로 이어붙입니다.
#define CONCAT(x, y) x##y
int main() {
int xy = 42;
return 0;
}
Token Pasting with Expansion (토큰 페이스팅과 확장):
- 매크로 매개변수를 다른 매크로의 일부로 사용하여 두 개의 토큰을 결합합니다.
#define VAR_NAME(prefix, suffix) prefix##suffix
int main() {
int VAR_NAME(variable, 1) = 10;
// int variable1 = 10;
return 0;
}
Concatenation in Macro Definitions (매크로 정의 내에서의 결합):
- 매크로 정의 내에서 토큰을 결합하여 새로운 식별자를 만듭니다.
#define DECLARE_VARIABLE(type, name) type name##_variable
int main() {
DECLARE_VARIABLE(int, my) = 42;
// int my_variable = 42;
return 0;
}
반응형
Stringizing and Concatenation Together (문자열화와 함께 사용):
- 토큰을 결합하면서 문자열화(#)도 함께 사용할 수 있습니다.
#define CREATE_STRING(name) #name##_string
#define DECLARE_STRING_VARIABLE(name) const char* CREATE_STRING(name) = "Hello, World!"
int main() {
DECLARE_STRING_VARIABLE(greeting);
// const char* greeting_string = "Hello, World!";
return 0;
}
Conditional Token Concatenation (조건부 토큰 연결):
- 조건문을 사용하여 특정 조건에서만 토큰을 결합할 수 있습니다.
#define ENABLED_FEATURE 1
#if ENABLED_FEATURE
#define FEATURE_SUFFIX _enabled
#else
#define FEATURE_SUFFIX _disabled
#endif
int main() {
int feature_state FEATURE_SUFFIX = 42;
// int feature_state_enabled = 42;
return 0;
}
반응형
'코딩취미 > C,C++' 카테고리의 다른 글
ISO 26262 주요 특징과 소프트웨어 구성 요소 (0) | 2024.02.16 |
---|---|
[c,c++] 함수 이름을 동적으로 생성해서 사용하기, 함수 이름 변경 호출 방법 10가지 (0) | 2024.01.06 |
C#과 C++의 주요 차이점 5가지 비교 정리 (0) | 2024.01.04 |
[c,c++] #ifndef 과 #if !define()의 차이점 (0) | 2024.01.04 |
[c,c++] 비트마스크 생성방법, 매크로 전처리기 ## 토큰결합연산 (0) | 2024.01.03 |