2011-04-10 3 views
3

저는 휴대용 C에서 Windows Visual Studio 2008 및 우분투 리눅스의 gcc에서 작동하는 도구를 가지고 있습니다 (#ifdef _WIN32). Solaris에 대한 지원을 추가하는 것이 더 까다로운 것 같습니다. 특히 ccgcc을 지원하고 싶다면 더욱 그렇습니다. . 하나의 예를 들어휴대용 C를 작성하기위한 온라인 자습서가 있습니까?

나는 몇 가지 코드를 가지고있는 리눅스/GCC에 vasprintf 및 Windows/MSVC에 _vscprintf/vsprintf를 사용하는 할당 된 메모리 버퍼로 sprintf들. 솔라리스에서도 vsnprintf을 사용할 수 없지만, 내 #ifdef에 무엇을 추가해야하는지, 아니면 다른 것으로 옮겨야하는지 잘 모릅니다.

잘하면 나는 cygwin, mingw를 사용하여 구성 할 필요가 없기를 바랍니다.

+0

사용할 수있는 기사가 많이 있습니다 .... 어떤 것을 보았습니까? –

+0

@Mitch Wheat : 몇 가지 Google 검색 및 StackOverflow 검색을 수행했으며 자주 묻는 질문과 같은 것 때문에 약간의 정보가 다가오고 있다는 것에 놀라움을 금치 못했습니다. 이제부터 Google이 모든 답변을 쉽게 찾을 수있는 곳으로 물어보기로했습니다. (- : – hippietrail

답변

1

이와 같은 테스트를 수행하는 유일한 방법은 gnu의 autoconf + configure (또는 단순한 구성)와 같은 것을 사용하는 것입니다. 그런 다음 vsprintf가 있는지, vasprintf에 대한 테스트가 실패했는지, vsnprintf에 대한 테스트가 실패했는지 등을 테스트 할 수 있습니다. 그런 다음 HAS_VSPRINTF 등을 코드에서 사용하도록 정의하고 올바른 위치에 래퍼 함수를 ​​작성합니다 기능.

이것은 가장 휴대하기 쉬운 방법으로 테스트 할 수 있으며, 솔루션을 코딩하는 데 가장 휴대하기 쉬운 방법 일 것입니다.하지만 아마도 가장 번거롭기는하지만 확실히 프로덕션 코드에서해야 할 일이 될 것입니다.

+0

나는 몇 년 동안 autoconf/configure를 배우는 데 익숙했지만, 내가 그것을 보았을 때마다 나는 시간의 큰 덩어리를 넣을 필요가 있다고 말할 수 있었다. 게다가 나는 생각하지 않았다. – hippietrail

+1

Visual Studio에서는 작동하지 않지만 * 할 수있는 작업은 config.h 파일을 생성하는 것입니다 (이 작업을 수행하면됩니다. 꽤 표준 mingw 상자에서) 다음 msvs 프로젝트와 함께 우주선. –