왜 API의 _open, _close 및 기타 표준 파일 I/O 함수 앞에 밑줄이 붙어 있습니까? 일부 표준이 아닌가?MSVC _open/_close/etc
2
A
답변
2
open/close는 일부 유닉스 표준, POSIX, SUS 등의 일부이지만 Windows는 유닉스가 아닙니다. fopen과 같은 ANSI C 표준 라이브러리 함수에는 밑줄 장식이 하나도 없다는 점에 유의하십시오.
Windows는 유닉스가 아니기 때문에 유닉스 스타일의 API를 사용할 수 없었던시기가있었습니다. 이 때문에 클라이언트 코드는 열기 및 닫기와 같은 정의 된 함수로 작성 될 수 있습니다. 기존 코드와의 호환성을 유지하기 위해 Unix 스타일 API를 추가 할 때 앞에 밑줄이있는 식별자가 구현 용으로 예약되어 있기 때문에 앞에 밑줄이 추가 될 수있었습니다. 즉, 기존 코드는 _open이라는 함수를 정의해야합니다.
Unix 스타일 api를 대상으로하는 "Portable"코드는 매크로 (또는 링커 수준에서 구현 된 별칭)를 사용하여 비교적 쉽게 컴파일 할 수 있습니다. unix를 대상으로하는 코드는 open이라는 함수를 정의하지 않았기 때문에 비교적 쉽게 컴파일 할 수 있습니다./닫기 등
관련 문제
- 1. MSVC 개체 레이아웃 쿼크
- 2. 소스 디렉토리 MSVC
- 3. MSVC x64로 fesetround
- 4. MSVC 런타임 종속성 문제
- 5. MSVC 힙 보류/커밋
- 6. open_memstream에 해당하는 MSVC
- 7. MinGW에서 MSVC DLL에 연결
- 8. exiflib with MSVC++
- 9. MSVC++의 무한대
- 10. MSVC - 헤더의 경고를 중지하십시오.
- 11. '__builtin_return_address'와 동일한 MSVC
- 12. MSVC 종속성 vs. 참조
- 13. MSVC enum 디버깅
- 14. Pro * C는 MSVC 6에서 작동합니까?
- 15. 템플릿 코드 내보내기 = 위험합니까? (MSVC)
- 16. MSVC++의 "Ch"란 무엇입니까?
- 17. Clang을 MSVC 2010과 함께 사용
- 18. .exe에 MSVC DLL을 포함하는 py2exe
- 19. MSVC 6.0의 시스템 날짜 받기
- 20. MSVC 릴리스의 다양한 성능 exe
- 21. C++ 소스 분석 도구 (MSVC)
- 22. MSVC 및 FreeGlut 컴파일러 오류
- 23. 가장 유용한 MSVC++ 비표준 매크로
- 24. 통근 "C"는 MSVC++ 9.0
- 25. Google GYP to MSVC 솔루션
- 26. Oracle 분산 데이터베이스 및 MSVC
- 27. 이 MSVC++ 컴파일 오류의 의미는 무엇입니까?
- 28. MSVC++ 처리 unsigned long long int
- 29. MSVC++ 2008 링커 및 dll에 관한 문제
- 30. 액세스 보호 회원 : 비주얼 C++에서 MSVC
정의 _CRT_NONSTDC_NO_DEPRECATE는 전역 적으로 접두사 이외에 일반 이름을 노출합니다. – diapir