C++ 전처리기가 C 전처리기와 동일합니까?
C++와 C의 전처리기가 얼마나 다른지 궁금합니다.
질문의 이유는 질문을 다루는 표준의 단락이 다른 문구(그리고 다른 단락 번호)를 가지고 있고 또한 질문과 관련하여 다른 경우에 전처리기 고유의 질문에 대한 이 질문 때문입니다.true
그리고.false
C++의 키워드입니다.
그렇다면 더 많은 차이가 있는 것일까요, 아니면 이것만 다른 것일까요?
질문의 확장은 소스 파일이 C++ 전처리기와 C 전처리기에 의해 다르게 방출되는 경우입니다.
C++03 전처리기는 C99 이전의 C 전처리기와 유사합니다.문구와 문단 번호는 조금씩 다르지만, C++ 전처리기가 C에 없는 디그래프(두 글자 대체 토큰)와 보편적인 문자 이름을 처리한다는 기술적 차이만 알고 있습니다.
C99부터는 C++의 현재 버전에는 존재하지 않는 몇 가지 새로운 기능(예: 가변 매크로)이 추가되었습니다.확실하게 기억은 안 나지만, 디그래프가 추가되었다는 것은 믿지 않습니다.
저는 C++0x가 그 둘을 다시 줄 것이라고 믿습니다(적어도 그것이 의도입니다).다시 말씀드리지만, 문단 번호와 문구가 동일하지는 않겠지만 (위에서 언급한 차이점을 유지하는 것 외에는) 동일하게 작업해야 한다는 취지라고 생각합니다.
이들은 동일해야 합니다.C++98과 C++03은 C90, C++0x는 C99와 일치해야 합니다.하지만 문구에 버그가 있을 수도 있습니다.
미리 정의된 매크로는 대부분 명백한 언어 기능 차이로 인해 전처리기마다 다릅니다.예: 비교:
- C99 N1256 초안 6.10.8 "미리 정의된 매크로 이름"
- C++11 N3337 초안 16.8 "미리 정의된 매크로 이름"
특히:
- C는 정의하지 말 것을 요구합니다.
__cplusplus
, C++는 버전을 나타내는 데 사용합니다. - 원인들
__STDC__
버전을 나타내기 위해, C++는 구현이 정의되어 있고 다음을 사용한다고 말합니다.__cplusplus
대신 - 채스
__STDC_IEC_559__
그리고.__STDC_IEC_559_COMPLEX__
부동 소수점 특성을 나타내기 위해 C++는 그렇지 않으며 유형별로 이를 대체하는 것으로 보입니다.std::numeric_limits<float>::is_iec559
- 에는 C 는 가 붙어 않습니다.
__STDCPP
:_STDCPP_STRICT_POINTER_SAFETY__
그리고.__STDCPP_THREADS__
DevSolar에 의해 언급된 바와 같이, C11은 C++11의 일부가 아닌 더 많은 정의를 추가했습니다.
언급URL : https://stackoverflow.com/questions/5085533/is-a-c-preprocessor-identical-to-a-c-preprocessor
'programing' 카테고리의 다른 글
"[네이티브 코드]"가 무슨 뜻입니까? (0) | 2023.10.08 |
---|---|
Oracle OCI, 바인딩 변수 및 IDIN(1, 2, 3)과 같은 쿼리 (0) | 2023.10.08 |
java.sql.SQL 예외:Io 예외:소켓 읽기 시간 초과 대 닫힌 연결 (0) | 2023.10.08 |
DBCP 연결 풀 로그인 시간 초과 (0) | 2023.10.08 |
Android 4.3 Bluetooth Low Energy 불안정 (0) | 2023.10.08 |