[완료] C++에서 strcpy 함수에 관한 질문
글쓴이: bluekyu / 작성시간: 금, 2011/01/21 - 10:41오전
안녕하세요. 요즘 C++을 열혈강의 책으로 공부하고 있는데, 이상한 오류가 발생하고 있어서 질문을 올립니다.
열혈강의 C++ 책에서 OOP 프로젝트라고 있는데, 그 프로젝트에서 1단계 코드를 그대로 타이핑 해서 컴파일을 했는데, 오류가 발생했습니다.
오류 내용은 아래와 같습니다.
./file.cpp: In function ‘void MakeAccount()’:
./file.cpp:80: error: ‘strcpy’ was not declared in this scope
그리고 80번째 줄 코드가
strcpy(pArray[index].name, name);
입니다.
현재 만 포함시킨 상태입니다. 그래서 strcpy를 레퍼런스에서 찾아보니까 cstring.h 에 포함이 되어 있더군요. 그래서 cstring을 포함시켜서 컴파일 해보니, 책에 있는 변수명이 cstring에 있는 함수와 겹치면서 에러를 내더군요. 그래서 변수명을 고쳐서 컴파일 하니까 제대로 되었습니다.
이렇게 에러는 해결했는데, 책에 있는 코드가 실행이 안 된다는게 이상하네요. 단순히 cstring.h 포함을 빼먹은 것은 아닌것 같고, 이러한 질문도 인터넷에 없는 것 같습니다.
혹시, 윈도우즈에서는 strcpy를 iostream만 가지고도 컴파일이 되나요? 아니면 제가 무슨 실수라도 한 것일까요?
Forums:
이걸 참고해보세요
http://www.cworldlab.com/CandCplus/clibrary/strcpy.htm
#include string.h
char *strcpy(char *dest, const char *src);
strcpy는 string.h 헤더를 사용하네요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
cstring.h라는 해더는
cstring.h라는 해더는 없습니다.
string.h또는 cstring입니다.
string.h에는 전역으로 strcpy가 선언되어있고,
cstring에는 표준 네임스페이스안에 std::strcpy로 선언되어있습니다.
그리고 일반론을 말하자면, 책이 잘못된 경우도 있습니다.
답글 모두 감사합니다. cstring을 포함시켜서
답글 모두 감사합니다.
cstring을 포함시켜서 해결은 했습니다. 그런데 다른 곳에서 물어도 봤는데, 윈도우즈에서는 이 헤더를 포함하지 않고도 iostream 헤더만을 가지고 strcpy를 사용할 수 있다고 하였습니다.
윈도우즈 iostream과 리눅스 것과 함수들이 다르게 정의되어 있나요?
/*** Signature ******************
* blog: http://blog.bluekyu.me/ *
********************************/
해더포함에 대한 것은, 리눅스/윈도우의 차이뿐만
해더포함에 대한 것은, 리눅스/윈도우의 차이뿐만 아니라, 리눅스끼리도 배포판이나 버전에 따라서 다를수 있습니다.
지금 해봤더니 되네요.
#include iostream
strcpy(&x[0], &x[0]);
vs2005에서 테스트해봤는데. #include iostream 헤더를 사용하니 컴파일 됩니다.
참고로 strcpy 정의부로 이동해보니 string.h 헤더를 사용하고 있었습니다.
__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(char *, __RETURN_POLICY_DST, __EMPTY_DECLSPEC, strcpy, __out_z char, _Dest, __in_z const char *, _Source)
cpp overload standard function 으로 정의된게 연관되었지 않나 생각됩니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기