bystander   3년 전

질문이 처음이라 공지 읽고왔더니.. 글이 다 사라졌네요

오늘 처음 시작한 초보입니다. 다름이 아니라 단계별 문제풀기에서 이제막 10문제를 풀었는데

다른분들 숏코딩한것이 궁금하여 저는 c++기반으로 공부하고있어서 참고가 될까 하여 확인을 해봤습니다.

숏코딩 최상단 부분의 고수님들은 다들 #include 가 아니라  #import를 쓰시는걸 보고 인터넷에 검색해가며 나름대로 공부를 했습니다.


c++에서 import는 헤더 중복문제를 쉽게 해결해주고 요청할대만 불러오기때문에 객체지향 언어에 맞는 방법이라는 것 까지 이해를했습니다.


그리하여 덧셈 뺄셈계산중 #inlcude 부분만 #import로 바꾸어 컴파일을 하였는데 기본에 #include <iostream> 코드때는 잘 되던 컴파일이

#import <iostream>에선 오류가 나는것을 확인했습니다. 숏코드 파일은 제가 알기로는 정답인것들만이 나오는것으로 알아서.. 내가 잘못쳤나보다

하고 통째로 복사를해서 상위 5개정도찍을 컴파일을 하였는데 다 코드를 열 수 없다는 오류를 내며 컴파일에 실패하였습니다.


사용법이 잘못된걸까 싶어 영문으로도 검색해보았으나 대부분 파이썬과 자바의 import 문에 대한 내용이였고

백준 고수님들처럼 #import <iostream>이나 #import<ios> , #imort<cstido> 등 이렇게 쓰시는분들을 웹상에서 찾을 수가 없었습니다.


기존처럼 include를 쓰면 해결될 문제지만. 새로운걸 알았는데 공부안하기도 찝찝하고 뭔가 개운하지도 않아서. 도움을 요청해봅니다.

제가 잘못친거면 괜찮은데 문제는 백준 채점란에 import로 코드를 바꾸어서 제출하면 정답으로 처리해준다는 것입니다. 그래서 지금 제 컴파일러가 문제인지. 제가모르는 시스템이 있는건지. 백준 채점해주는 프로그램이 c++로 채점한것이 아닌 다른언어로 인식한건지 .. 초보는 눈물만 흘립니다.

bupjae   3년 전

#import 는 C++ 표준이 아니며, gcc 와 MSVC 에서 사용하는 의미가 전혀 다릅니다.

   

gcc 에서의 #import 는 같은 파일을 최대 한 번만 포함하라는 의미입니다. 하지만 C/C++ 표준 헤더 파일은 이미 여러번 포함해도 오류가 나지 않도록 구성했기 때문에, 굳이 표준이 아닌 #import 를 사용해야 할 필요는 없습니다.

   

MSVC 에서의 #import 는 형식 라이브러리 (type library) 를 불러오라는 의미입니다. COM 객체를 사용하는 것이 주 목적입니다. 형식 라이브러리와 전혀 관계 없는 <iostream> 에 #import 를 사용하면 당연히 컴파일 오류가 발생합니다.

   

BOJ 에서는 gcc 를 쓰기 때문에 #include 대신 #import 를 사용해도 정상적으로 컴파일이 됩니다만, 어쨌든 #import 의 사용은 별로 추천하고 싶지 않습니다.

bystander   3년 전

bupjae  님처럼 수준높은 지식을 배우려면 저도 더 열심히해야겠네요 감사합니다.

댓글을 작성하려면 로그인해야 합니다.