c++ cstdlib 없이도 atoi가 에러 없이 수행되는 이유가 궁금합니다.
조회수 527회
char* 배열을 int로 바꿔서 다루는 문제를 풀고 있습니다.
저는 atoi()가 cstdlib에 포함되어 있다고 알고 있었고,
교수님의 ppt에서도 atoi를 쓸 때면 항상 cstdlib가 include 되어 있었는데,
이번에 과제를 하면서 cstdlib 없이 iostream만 포함했는데도 에러 없이 잘 실행되는 것을 관찰했습니다.
아래는 해당 코드입니다. 왜 에러가 안 나는 건지 너무 궁금합니다...
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
iostream 헤더파일 안에서 다른 헤더파일들을 인클루드하고 있는데, 그 다른 헤더파일들이 다시 또다른 헤더 파일들을 인클루드하고 있습니다. 그 과정 속에서 어떤 한 헤더 파일이 cstdlib를 인클루드하고 있기 때문에 에러가 나지 않은 것입니다.
아래 코드를 컴파일하면 에러가 날거고요. iostream의 주석을 해제하고 컴파일하면 에러가 나지 않을 겁니다.
//#include <iostream> #include <cstdio> using namespace std; int main() { printf("%d,", atoi("1234")); }
장기적으로 보면 헤더 파일의 내부 구현은 바뀔수도 있고, 그러면 인클루드한 헤더 파일이 달라질수도 있기 때문에, 특정 함수를 사용할 때에는 그 함수를 포함하는 헤더 파일을 정확히 인클루드해야 합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력