본문 바로가기

C++

(2)
[C++] C++ 소스에서, extern "C" 라는 코드의 의미가 무엇인가요? Q: C++ 코드에서, extern "C"가 의미하는 것이 정확하게 뭔가요?예를 들면, 아래와 같은 코드에서요.extern "C" { void foo(); }(질문자: Litherum) A: extern "C"는 C++ 함수 명이 C 링키지를 가지고 있다는 뜻입니다. (정상적으로는 컴파일러가 해당 함수명을 찾을 수 없음) 그래서 이것이 적용되는 코드에서는, 당신의 함수를 선언한 "C"와 호환되는 헤더파일과 링크를 할 수 있습니다. 당신의 함수는 (당신의 C++ 컴파일러로 컴파일 된) 바이너리 포맷에 담기고, 링커는 "C"이름을 이용하여 그걸 연결시킬겁니다.C++은 함수 오버로딩이 허용되지만 C에서는 그렇지 않기 때문에, C++에서는 함수명을 해당 함수의 유니크 ID로 이용할 수 없습니다. 그래서 이름과 ..
[C++] 왜 iostream::eof를 반복문(루프)의 조건문에 쓰면 안되죠? http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong Q: 왜 iostream::eof를 루프의 조건문에 쓰면 안되죠? 제가 방금 이 링크의 댓글을 봤는데요, 루프의 조건문에 iostream::eof를 쓰면 "완전히 확실하게 틀리다"라고 하네요. 저는 일반적으로 while(cin>>n) 이런 식으로 코딩을 하는데, 아마 묵시적으로 EOF를 체크하는 구문일겁니다. 그런데 왜 iostream::eof 이렇게 명시적으로 EOF를 체크하는 구문을 호출하면 안되는거죠?C 언어에서 scanf("...",...)!=EOF를 쓰는 것과는 어떻게 다르죠? (질문자: MAK) A: 왜냐하면,i..