programing

C++ 전처리기가 C 전처리기와 동일합니까?

mailnote 2023. 10. 8. 10:18
반응형

C++ 전처리기가 C 전처리기와 동일합니까?

C++와 C의 전처리기가 얼마나 다른지 궁금합니다.

질문의 이유는 질문을 다루는 표준의 단락이 다른 문구(그리고 다른 단락 번호)를 가지고 있고 또한 질문과 관련하여 다른 경우에 전처리기 고유의 질문에 대한 이 질문 때문입니다.true그리고.falseC++의 키워드입니다.

그렇다면 더 많은 차이가 있는 것일까요, 아니면 이것만 다른 것일까요?

질문의 확장은 소스 파일이 C++ 전처리기와 C 전처리기에 의해 다르게 방출되는 경우입니다.

C++03 전처리기는 C99 이전의 C 전처리기와 유사합니다.문구와 문단 번호는 조금씩 다르지만, C++ 전처리기가 C에 없는 디그래프(두 글자 대체 토큰)와 보편적인 문자 이름을 처리한다는 기술적 차이만 알고 있습니다.

C99부터는 C++의 현재 버전에는 존재하지 않는 몇 가지 새로운 기능(예: 가변 매크로)이 추가되었습니다.확실하게 기억은 안 나지만, 디그래프가 추가되었다는 것은 믿지 않습니다.

저는 C++0x가 그 둘을 다시 줄 것이라고 믿습니다(적어도 그것이 의도입니다).다시 말씀드리지만, 문단 번호와 문구가 동일하지는 않겠지만 (위에서 언급한 차이점을 유지하는 것 외에는) 동일하게 작업해야 한다는 취지라고 생각합니다.

이들은 동일해야 합니다.C++98과 C++03은 C90, C++0x는 C99와 일치해야 합니다.하지만 문구에 버그가 있을 수도 있습니다.

미리 정의된 매크로는 대부분 명백한 언어 기능 차이로 인해 전처리기마다 다릅니다.예: 비교:

특히:

  • 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

반응형