작성
·
1.1K
2
강의 13-6을 들으면서 strcpy_s 를 넣는 중 현재 scope에서 정의가 되어있지 않다고 되어 있습니다.
cstring, string.h 등등 여러 헤더들 다 넣어봤는데 컴파일이 되지 않네요. (대신 IDE에서는 밑줄이 없습니다)
찾아보니 이게 VC 독자규격? 이라는 이야기가 있는데 VS Code에서는 실습할 수 없다는 걸까요?
답변 1
0
안녕하세요 :)
아마도 아래의 에러 메세지를 받아보신 것 같습니다.
test.cpp:10:71: error: 'strcpy_s' was not declared in this scope
strcpy_s(stringBuffer, _countof(stringBuffer), "Hello Hello");
혹시 어떤 컴파일러를 사용 중이신가요?
(VS Code는 코드 편집기이지, 컴파일러는 아닙니다)
사용하시는 컴파일러에 따라 다른 C Standard Library를 사용할 수 있습니다.
그리고 그 중에는 strcpy_s (를 포함하여 다른 내장함수들)를 포함하고 있지 않는 경우가 있습니다.
즉, 똑같이 #include <string.h>를 해도
어떤 컴파일러가 사용하는 <string.h>에는 strcpy_s가 있을 수도 있고,
어떤 컴파일러가 사용하는 <string.h>에는 strcpy_s가 없을 수도 있습니다.
예를 들어, 같은 컴퓨터라도 Visual Studio 에서는 아래와 같이 잘 돌아가지만
g++에서는 동일한 코드가 돌아가지 않습니다.
사용하시는 컴파일러의 C Standard Library를 확인해보시고,
Microsoft C Standard Library로 맞춰 사용하시길 바랍니다.
여담으로, Visual Studio를 사용해보시는 것도 권해드립니다.
개인적인 생각으로 좋은 개발자가 되기 위한 조건 중에는 컴파일러/IDE로부터 제공받을 수 있는 것들은 무엇인지 정확히 알고, 컴파일러의 이점을 십분 활용할 수 있는 능력도 있다고 생각하니까요.
감사합니다.