3
VisualStudio 2005에서 Qt 4.8.1을 빌드하고 있는데 컴파일러에서 찾을 수없는 문제가 발생했습니다 _fileno
.Qt, windows 및 _POSIX_
은 몇 가지 조사 후, 나는 STDIO.H에 내가 다음 Qt는 코드를 통해 보았다
#ifdef _POSIX_
_CRTIMP __checkReturn int __cdecl fileno(__in FILE * _File);
#else
_CRTIMP __checkReturn int __cdecl _fileno(__in FILE * _File);
#endif
가 있음을 발견하고 그 qfsfilengine_win.cpp을 발견하고 qfilesystemengine_win.cpp 모두
#define _POSIX_
이 이것이 저의 실수 인 것처럼 보입니다.이 줄을 제거하면 성공적으로 구축 된 것처럼 보입니다.
누구도이 파일들이 _POSIX_
을 정의하는 이유를 알고 있습니까?
감사합니다.
오랜 시간 동안 posix 이름이 사용되지 않으므로 실수가 아닙니다. 이 파일들은 * 정의 *'_POSIX_'를 정의하지 않습니다. Qt가 문제를 해결하려고하는 것처럼 보입니다. 컴파일러 헤더 파일을 편집하지 않으면 정말로 깊은 구멍을 파십시오. –
qfsfilengine_win.cpp 및 qfilesystemengine_win.cpp 모두에 #define _POSIX _이 (가) 있습니다. stdio.h # if 그것,하지만 내 질문에 대한 잘못된 #define 것 Qt cpp 파일에 대한 것입니다. – Liron
글쎄, 그것은 Windows에서 기술적으로 올바르지 않지만, 여러 플랫폼과 컴파일러를 지원해야 할 때 라이브러리가 사용하는 일종의 해킹입니다. 당신은 XY 질문을하고 있습니다. 당신은 Y가 문제라고 가정하지만 실제 문제는 아닌 것 같습니다. 우리는 X가 어떻게 생겼는지 전혀 모른다. '_fileno' 대신에'fileno'를 사용하고자한다면 QSomething 클래스를 사용하지 않는 것이 좋습니다. –