sgc109   9년 전

이 사이트 채점결과로는 컴파일 에러가 나는데 제 pc(windows 8)의 visual studio 2010 에서는 #include<stdlib.h> 를 하지 않아도 atoi 를 사용하는 

부분에서 문제가 없었고, 또 ubuntu 에서 vi 로 똑같은 소스코드를 작성해서 g++ 로 컴파일 했을때도 전혀 문제가 없었는데 왜 이런건가요??

 컴파일러 버전에 따라 굳이 명시를 하지않아도 자동으로 헤더를 포함시켜주기라도 하는건가요??

yukariko   9년 전

C에선 헤더를 명시해주지않아도 대부분의 함수는 돌아가더라구요.

그런데  C++ 에서는 다 잡아줘야했습니다.

컴파일 옵션때문이 아닐까 싶습니다만..

sgc109   9년 전

visual studio 와 우분투 모두 C++ 을 사용했습니다!!

kesakiyo   9년 전

제가 아는 짧은 지식으로는 컴파일러마다 차이가 있다고 알고 있습니다.

같은 우분투라고 하더라고 컴파일러 버전이 다르다면 약간씩 차이가 있을수 있을거 같네요.

BOJ에서 사용하는 컴파일러는 g++-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 입니다.

한번 비교해 보세요^^;;

자세한 설명은 @hibbah 가 해주지 않을까요?

Hibbah   9년 전

저도 궁금했던 부분인데 @kesakiyo님이 대답을 회피하시니 안타깝네요

sgc109   9년 전

고수님들끼리 왜이러시나! ㅋㅋ

Hibbah   9년 전

음..... 검색능력도 부족하고 영어능력도 부족한지라... 짧은 시간 투자해봤지만 모르겠네요 ㅜ.ㅜ

그리고 kesakiyo님은 고수가 맞지만 예선탈락한 저는 고수가 아님니다... ㅎㅎ

sgc109   9년 전

하지만 1/2 rule 때문에 고수들이 많이 떨어졌다는 사실을 감안한다면 Hibbah 님은 고수가 맞으신듯!?

h0ngjun7   9년 전

VS Professional 2013 C++을 쓰는데 memset을 쓸 때, <cstring>이나 <memory.h>를 include 안해줘도 항상 실행이 되더라구요;;

그래서 여기 제출하면 컴파일 에러를 자주 받았었는데.. 흠...

그런데 이번 인터넷 예선 때부터는 C++ 버전도 여러가지 선택할 수 있더라구요?

크게 문제될 것은 없어 보입니다.

Hibbah   9년 전

저는 1/2rule이랑은 전혀 상관없이 오로지 실력때문에 떨어졌슴니다... ㅜㅜ.............................

kesakiyo   9년 전

저희 학교 교수님이 말씀을 인용해 보자면

"visual studio는 너무 똑똑해서 알아서 다 해준다. 근데 gcc는 멍청해서 그런거 안해준다."

라고 하시더라고요.

그래서 항상 의심이 가는 함수를 호출 하면 http://www.cplusplus.com 여기 가서 헤더파일을 확인해봐요ㅎㅎ

wookayin   9년 전

C++의 표준 함수들은 각각 그것이 정의되어 있는 헤더파일이 C++ 표준 스펙에 정의되어 있습니다.

예를 들어 memset 의 경우는 <cstring> 또는 <string.h>에 정의되어 있고,

어떤 컴파일러를 써도 이 헤더를 include 하면 memset이 잘 정의됨을 보장받을 수 있습니다.

그러나 각 컴파일러 구현체들은 내부적으로 헤더간의 의존성이 다르기 때문에 특정 헤더를 include하지 않아도 자동으로 include 될수 있습니다.

하지만 이는 어디에도 약속되지 않은 것이고 표준도 아니기 때문에, 안 되더라도 어쩔수 없습니다. 그냥 그 특정 환경에서만 되는겁니다.

"visual studio는 너무 똑똑해서 알아서 다 해준다. 근데 gcc는 멍청해서 그런거 안해준다."

저는 이 말이 굉장히 거슬리는데, 특정 컴파일러가 똑똑하거나 멍청한게 아니고 표준을 구현하는 방식이 다를 뿐입니다. (엄밀하게는 유저가 사용을 잘못한것)

결론: 표준을 따르면 어디서도 문제가 안생깁니다.

kesakiyo   9년 전

@wookayin

뭐 기분나쁘자고 한말은 아닌데ㅎㅎ

교수님이 그런 뉘앙스로 말씀하신게 아니라 욱님이 말씀하신 것처럼 "컴파일러마다 다르다" 라는 것을

재미있게 전달하고자 한 것인데 그것을 단순히 문자로만 기술하다 보니 의미가 변절되서 전달이 된거 같네요.

기분나쁘셨다면 죄송합니다. 많은 분들이 보시는곳에 글을 쓸 때 좀더 신중하게 썻어야 됐는데ㅎㅎ

wookayin   9년 전

@kesakiyo  괜찮습니다~ 저도 농담으로 저런 말 가끔 합니다 :) 

sgc109   9년 전

제가봤을땐 Wookayin 님의 거슬린다는 말씀이 나쁜 뜻이 아니라 그냥 본인과 생각이 전혀 다르다는 말을 좀 강하게 표현하신 것같아요 ㅎㅎ 너무 신경쓰지마세요~

교수님께서 아시면서도 학생들이 단순히 이해하기쉽게 비유하셨을 수도 있죠~

sgc109   9년 전

근데 몰랐는데 여기 페이스북처럼 태그도 되는군요..

Hibbah   9년 전

BOJ 짱짱맨

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