워닝 “No newline at end of file”은 왜 뜨나요?

발생하는 문제 및 실행환경

C++ 컴파일러가 자꾸 “No newline at end of file”라면서 워닝을 띄웁니다. 왜 소스/헤더파일 마지막에 엔터를 쳐줘야 되나요? 에러도 아닌게 자꾸 거슬리고 뭔가 찜찜한데 이거 어떻게 없애는지 아시는 분?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    ANSI 표준에서 마지막 줄을 개행하지 않은 파일을 #include한 경우를 생각해보면,

    어떤 헤더 myheader.hpp

    /*파일 myheader.hpp*/
    
    //어떤 함수~
    //어떤 변수~
    
    //주석처리하고 있고 마지막에 엔터안했음
    

    myheader.hpp를 include하는 어떤 c++파일 mycpp.cpp가 이렇게 있다고하면

    /*파일 mycpp.cpp*/
    #include "myheader.hpp" 
    int main() {}
    

    이걸 컴파일 하면

    //어떤 함수~
    //어떤변수~
    
    //주석처리 하고있고 마지막에 엔터안했음 int main() {}
    

    처럼 include 바로 뒤의 줄이 주석처리될 수도 있습니다. 이걸 컴파일 단계에서 주의를 주지 않을 경우 프로그래머는 이유도 모른 체 내 컴퓨터가 이상해졌다고 주변 사람들에게 도움을 청하겠지요.

    C++11부터는 표준이 바뀌어서 신경 쓸 필요 없는 문제지만 C++11미만의 컴파일러에서는 찾기 힘든 문제가 될 수 있으니 파일 맨 밑줄은 꼭 띄워주세요

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.