비주얼씨뿔뿔과 지씨씨에서 sprintf를 사용할 때의 차이
글쓴이: dltkddyd / 작성시간: 화, 2013/04/09 - 11:50오전
Visual C++에서 sprintf를 썼는데, 경우에 따라서는 sprintf_s를 사용하라며 오류 메시지를 출력합니다. C++ 표준에서는 sprintf_s를 지원하지 않더군요. 마이크로소프트 전용이라서 다른 플랫폼, 예컨대 GCC에서는 sprintf_s를 사용하는 코드는 컴파일 되지 않을 겁니다. GCC에서는 sprintf만 지원하죠.
제가 라이브러리로 포함할 코드 몇 가지를 만들던 중 sprintf_s나 sprintf 함수를 선택적으로 사용할 수 있는 방법으로 전처리기를 사용하면 좋을 것 같다고 생각했습니다. 예컨대 비주얼을 나타내는 상수가 A라 하고, GCC 컴파일러를 나타내는 상수를 B라고 약속하면 다음과 같이 사용할 수 있겠죠.
#ifdef A
sprintf_s(...);
#endif
#ifdef B
sprintf(...);
#endif
그러니까 질문드리려는 것은 각 컴파일러를 구분하는 고유상수가 존재하는가라는 것입니다. 컴파일러를 구분하는 고유상수는 뭔가요?
Forums:
gilgil.net
__STDC_WANT_SECURE_LIB__ 가 선언이 되어 있으면 VS 컴파일러로 보면 됩니다.
다음과 같이 사용하면 됩니다.
www.gilgil.net
답변 감사드립니다.
전에도 좋은 답변덕분에 문제 해결에 많은 도움이 됐습니다. 그런데 전처리기에서 사용하신 ##는 뭘 의미하는 건가요?
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
음 ..
## 은 concatenation macro 입니다.
http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
컴파일러/아키텍춰/운영체제를 구분하는 상수가
컴파일러/아키텍춰/운영체제를 구분하는 상수가 있구요.
원하는시는 것은 컴파일러를 구분하는 상수가 아니라 운영체제를 구분하는 상수 맞지요?
Windows
Type Macro Description
Identification _WIN16 Defined for 16-bit environments 1
Identification _WIN32 Defined for both 32-bit and 64-bit environments 1
Identification _WIN64 Defined for 64-bit environments 1
Identification __WIN32__ Defined by Borland C++
Identification __TOS_WIN__ Defined by xlC
Identification __WINDOWS__ Defined by Watcom C/C++
Linux kernel
Type Macro Description
Identification __linux__ 1
Identification linux Obsolete (not POSIX compliant)
Identification __linux Obsolete (not POSIX compliant)
[참고]
운영체제 구분 : http://sourceforge.net/p/predef/wiki/OperatingSystems
컴파일러 구분 : http://sourceforge.net/p/predef/wiki/Compilers
아키텍춰 구분 : http://sourceforge.net/p/predef/wiki/Architectures
——
———
Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -
원하시는게 이것 같습니다. GCC :
원하시는게 이것 같습니다.
GCC : __GNUC__
http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
MSVC: _MSC_VER
http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
from bzImage
It's blue paper
댓글 달기