인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

장한준님의 프로필 이미지
장한준

작성한 질문수

홍정모의 따라하며 배우는 C++

13.6 템플릿을 부분적으로 특수화하기

VS Code 에서 실습을 진행하고 있는데 strcpy_s 에 관한 질문입니다!

작성

·

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로부터 제공받을 수 있는 것들은 무엇인지 정확히 알고, 컴파일러의 이점을 십분 활용할 수 있는 능력도 있다고 생각하니까요.

 

감사합니다.

장한준님의 프로필 이미지
장한준

작성한 질문수

질문하기