맨위로가기

C 대체 토큰

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

C 대체 토큰은 C 언어에서 사용되는 특수 문자를 대체하는 매크로들을 정의하는 헤더 파일인 `iso646.h`에 의해 제공된다. 이 매크로들은 `and`, `or`, `not` 등과 같은 키워드를 사용하여 논리 연산 및 비트 연산을 수행할 수 있게 해준다. C++에서는 이러한 키워드가 이미 예약되어 있어 `iso646.h`를 포함할 필요가 없으며, C++17부터는 `` 헤더가 사용되지 않고 C++20에서는 제거되었다. `iso646.h`는 현재 UTF-8과 같은 문자 인코딩의 발전으로 인해 사용 빈도가 낮다.

더 읽어볼만한 페이지

  • C 표준 라이브러리 - 파일 끝
    파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다.
  • C 표준 라이브러리 - C 자료형
    C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.
C 대체 토큰
개요
설명C 표준 라이브러리 헤더, 일반적인 연산자의 대체 스펠링 제공
헤더 파일iso646.h
도입C95
대체 토큰
and&& (논리 AND)
and_eq&= (비트 AND 대입)
bitand& (비트 AND)
bitor| (비트 OR)
compl~ (비트 NOT)
not! (논리 NOT)
not_eq!= (같지 않음)
or|| (논리 OR)
or_eq|= (비트 OR 대입)
xor^ (비트 XOR)
xor_eq^= (비트 XOR 대입)
사용 예시
조건문if (x bitand 1)는 if (x & 1)과 동일함
논리 연산if (not flag)는 if (!flag)와 동일함
참고 사항
C++C++에서는 이러한 대체 토큰이 키워드로 직접 지원되어 iso646.h 헤더를 포함할 필요가 없음
표준
CC95에서 도입

2. 매크로

`iso646.h` 헤더는 아래 표와 같이 11개의 매크로를 정의한다.[13][2] 각 매크로는 연산자에 해당한다.[10]

매크로정의
`and``&&`
`and_eq``&=`
`bitand``&`
`bitor``
`compl``~`
`not``!`
`not_eq``!=`
`or```
`or_eq`=`
`xor``^`
`xor_eq``^=`


3. C++에서의 사용

C++에서는 `and`, `or`, `not` 등이 연산자 키워드로 이미 예약되어 있으므로, `iso646.h`를 포함할 필요가 없다.[3] C++98 표준은 C와의 호환성을 위해 `<iso646.h>`와 `<ciso646>` 헤더를 모두 제공했지만, 이 헤더들은 실질적으로 아무런 내용도 포함하지 않았다.[4][5] 일부 컴파일러(예: 마이크로소프트 비주얼 C++)는 컴파일러 플래그가 설정되어 있지 않으면 이러한 식별자를 사용하기 위해 헤더를 포함해야 했던 적이 있었다.[6][7] `<ciso646>` 헤더는 C++17에서 더 이상 사용되지 않았고 C++20에서 제거되었으며,[8] `<iso646.h>`는 C와의 호환성을 위해 유지되었다.[9]

4. 사용 예시 (C 언어)

`iso646.h` 헤더는 아래 표와 같이 11개의 매크로를 정의한다.[13]

매크로정의
`and``&&`
`and_eq``&=`
`bitand``&`
`bitor``
`compl``~`
`not``!`
`not_eq``!=`
`or```
`or_eq`=`
`xor``^`
`xor_eq``^=`



ISO 646 변형 문자 집합으로 C의 기호를 기술할 수 없었던 환경에서 이 헤더를 사용했다.[11] 그러나 현재는 UTF-8과 같은 인코딩 환경이 일반적이므로 이 헤더를 사용할 필요는 거의 없다.

4. 1. 조건문

cpp

#include

#include

int main(void)

{

if(((2 + 3) == 5) and ((4 - 3) == 1))

{

puts("SUCCESS");

}

return 0;

}

```

위 코드는 `&&` 연산자 대신 `and` 매크로를 사용한 예시이다.[13] 위 코드는 아래 코드와 동일하다.

```cpp

#include

#include

int main(void)

{

if(((2 + 3) == 5) && ((4 - 3) == 1))

{

puts("SUCCESS");

}

return 0;

}

4. 2. 비트 연산

wikitext

iso646.h 헤더는 비트 연산에 사용되는 매크로를 정의한다.[13]

매크로정의
bitand&
bitor>
compl~



다음은 iso646.h를 이용한 or 연산의 예시이다.

```c

#include

#include

int main(void)

{

if((1 bitor 2) == 3)

{

puts("SUCCESS");

}

return 0;

}

```

위 코드는 `|` (OR) 연산자 대신 `bitor` 매크로를 사용한 예시이다. `bitor` 부분을 `bitand`로 바꾸면 `&` (AND) 연산을 수행할 수 있다. 아래는 `bitand`를 사용한 예시이다.

```c

#include

#include

int main(void)

{

if((1 bitand 2) == 0)

{

puts("SUCCESS");

}

return 0;

}

```

4. 3. 대입 연산자

cpp

#include

#include

int main(void)

{

int x = 1;

x or_eq 2;

if (x == 3)

{

puts("SUCCESS");

}

return 0;

}

```

위 코드는 `|=` 연산자 대신 `or_eq` 매크로를 사용한 예시이다.[13] `and_eq`를 사용하면 `&=` 연산을, `xor_eq`를 사용하면 `^=` 연산을 수행할 수 있다.

참조

[1] 웹사이트 CppCon 2017: Panel "Grill the Committee" https://www.youtube.[...]
[2] 웹사이트 Rationale for International Standard - Programming Languages - C http://www.open-std.[...] 2010-10-17
[3] 서적 Design and Evolution of C++ Addison-Wesley Publishing Company 1994-03-29
[4] 서적 C++ in a Nutshell O'Reilly Media
[5] 서적 C++17 Standard Library Quick Reference Apress
[6] 서적 C++11 for Programmers Pearson Education
[7] 웹사이트 Logical AND Operator: && https://docs.microso[...] 2021-12-27
[8] 웹사이트 https://learn.micros[...] 2021-12-07
[9] 간행물 Clarifying the status of the "C headers" https://www.open-std[...] ISO/IEC JTC1 SC22 WG21 2021-06-11
[10] 문서 ルネサンスのページ http://tool-support.[...]
[11] 문서 IBMのciso646の記事 https://www.ibm.com/[...]
[12] Microsoft https://docs.microso[...]
[13] 웹인용 Rationale for International Standard - Programming Languages - C http://www.open-std.[...] 2010-10-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com