>백엔드 개발 >C++ >동일한 C 프로그램에서 cout과 wcout을 혼합하지 말아야 하는 이유는 무엇입니까?

동일한 C 프로그램에서 cout과 wcout을 혼합하지 말아야 하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-14 14:11:02799검색

Why Should You Avoid Mixing cout and wcout in the Same C   Program?

동일한 프로그램에서 넓은 출력 스트림과 좁은 출력 스트림 혼합

"C Cookbook"에서는 cout과 wcout을 혼합한다고 언급되어 있습니다. 같은 프로그램을 하면 안 된다. 이 의견은 C 및 C 표준에 따라 스트림에 방향이 있다는 사실에서 비롯되었으며, 이 방향이 스트림에 설정된 후에는 방향과 호환되지 않는 작업을 혼합해서는 안 됩니다.

무엇 이것이 실제로는 무슨 뜻인가요?

cout이나 wcout이 처음 호출되면 stdout의 방향이 설정됩니다. cout의 경우 stdout은 바이트 지향 스트림이 되고, wcout의 경우 stdout은 와이드 지향 스트림이 됩니다. C 표준 [27.4.1] 및 C 표준 [7.19.2]에 따라 스트림 방향이 설정되면 해당 스트림 방향과 호환되지 않는 함수를 호출하면 안 됩니다.

규칙 예외

그러나 모든 컴파일러가 이 표준을 엄격하게 따르는 것은 아니라는 점에 유의하는 것이 중요합니다. 예를 들어 Visual C 10.0에서는 스트림 방향을 설정하는 데 사용되는 fwide 함수가 구현되지 않습니다. 따라서 Visual C에서는 cout과 wcout의 혼합이 허용된다.

마찬가지로 GCC 초기 버전에서는 버그 수정으로 인해 std를 호출하여 동일한 프로그램 내에서 cout과 wcout을 호출할 수 있었다. ::ios::sync_with_stdio(false);

그러나 이는 규칙의 예외라는 점을 명심하는 것이 중요합니다. 일반적으로 동일한 프로그램에서 넓은 출력 스트림과 좁은 출력 스트림을 혼합하는 것은 권장되지 않습니다. 이렇게 하면 예기치 않은 동작이나 정의되지 않은 결과가 발생할 수 있습니다.

위 내용은 동일한 C 프로그램에서 cout과 wcout을 혼합하지 말아야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.