setbuf는 boj에서는 채점방식에 의해 불필요한 코드입니다.
c++ 의 sync_with_stdio는 이전에 런타임에러 문제가 있었는데 지금은 모르겠네요
그런데 C++로 제출할때 런타임에러가 아니라면 sync_with_stdio는 문제가 아닌듯 싶습니다.
제 생각엔 라이브러리나 채점환경보다는 코드에 문제가 있어 보입니다.
따라서 코드를 봐야 무엇이 문제인지 알 수 있을것 같네요.
11571번 - 분수를 소수로
소스 첨부합니다.
원인은 index배열 때문입니다.
index배열의 이름을 다른것으로 바꾸면 해결됩니다.
Gcc컴파일러에 대한 오류이니 환경문제인것은 맞네요
yukariko 님 답변 감사합니다.
다른 분들을 위해 공유해 주신 link 의 comment 복사해서 남기겠습니다.
index, rindex, bcopy, bzero, and bcmp (and probably a few more that I forget) are ancient BSD functions which used to be in <string.h> but didn't make the cut when C was standardized. In standard C the index function is gone. In POSIX it was moved to <strings.h> for a while but in the latest versionit's gone from there too.
However, gcc's default mode is not "standard C" or "standard C with POSIX". It's "compatible with ancient BSD". To compile more modern code, use -std=c11 (or c99 or -ansi) –
댓글을 작성하려면 로그인해야 합니다.
codeguru22 8년 전
같은 코드를 C++ 로 제출하면 pass, C 로 제출하면 런타임에러가 납니다.
C++ 로 제출할 때 막은 코드는
//#define _CRT_SECURE_NO_WARNINGS -- 이건 vs 에서 warning 나는거 막는거라 사실 다른 system 에는 영향을 주면 안됨
// setbuf(stdout, NULL); -- 이건은 출력할때 시간안에 다 나오지 않으면 0 점 처리되는 현상을 막기 위해 추가하는 코드
C++ 의 sync_with_stdio(false) 도 출력할 때 speed 를 올리기 위해 추가하는 코드인데 서버에서 이와 같은 처리가 잘되고 되어 있는지 확인 부탁합니다.