크로스 플랫폼에서 win32 정적 라이브러리의 코드를 사용할 수 있는지 아는 사람이 있습니까? 코드를 약간 변경해야한다는 것을 알고 있지만 C ++ 코드는 클래스를 제외한 모든 플랫폼에서 동일하다고 생각합니다. 간단한 유형의 경우 누군가가 int16_t 또는 int16_fast_t를 대신 사용하거나 예를 들어 짧게 사용하라고 말했습니다. Visual Studio에서 헤더와 파일을 복사하고 코드 라이트를 사용하여 Mac 용으로 컴파일 할 수 있다는 것이 맞습니까? 코드 자체가 크로스 플랫폼 인 경우?
친애하는,
케이
해당 라이브러리에있는 내용에 따라 다릅니다. Visual C ++ Win32 정적 라이브러리 프로젝트라는 사실은 라이브러리가 컴파일되는 방법을 알려줍니다. 해당 라이브러리에 들어가는 코드에 대해서는 아무 것도 알려주지 않습니다. 모두 완벽하게 이식 가능한 표준 C ++ 코드 일 수 있습니다. 모든 두 번째 줄이 분명히 이식 할 수없는 Windows API 함수 호출 인 코드 일 수도 있습니다.
라이브러리의 코드를 이식 할 수 있는지 여부는 모두 코드에 따라 다릅니다. 또는로 대체 short
하는 것은 코드의 이식성을 높이기 위해 아무것도하지 않습니다 ( 일부 구현 정의 속성을 원래 사용하지 않는 한 ). 그래서 와 의 총괄 교체가 무엇 을 달성 해야하는지 잘 모르겠습니다 . 언어에 내장 된 기본 유형입니다. 대상 플랫폼이 지원하는 경우 표준 라이브러리에 의해 정의 된 유형 입니다. 따라서 어떤면에서 실제로 . 하지만 항상 정의되어 있으므로입니다int16_t
int_fast16_t
short
short
int16_t
short
int16_t
int16_t
short
int_fast16_t
short
. 제공하는 의미 체계가 필요한 경우 표준 라이브러리의 고정 너비 정수 유형을 사용하십시오. 그렇지 않으면 사용할 이유가 없습니다. C에서 고정 폭 정수 타입을 사용하는 것이 주 ++은 C ++ 헤더 포함 <cstdint>
보다는 <stdint.h>
++ C에 존재하는 것이 보장되지 않는다. 또한 <cstdint>
네임 스페이스에 선언을 배치하는 것만 보장됩니다 std
. 따라서 최대한의 휴대 성을 위해 사용 가능 std::int16_t
하다는 보장이 없기 때문에 ::int16_t
사용하십시오.
라이브러리의 코드가 이식 가능하다면 다른 플랫폼에서 해당 라이브러리를 빌드하는 데 필요한 것은 해당 플랫폼의 빌드 시스템뿐입니다. 그렇습니다. 코드가 이식 가능하다면 다른 플랫폼에서 사용하는 도구를 사용하여 다른 플랫폼에서 해당 코드를 컴파일하기 만하면됩니다. 이것이 바로 코드가 의미하는 바에 대한 정의입니다. 휴대용… ;-)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다