C++에서 두 개의 디렉토리를 동기화하는 프로그램을 작성하고 그 중 일부는 char 배열의 크기를 가져와야합니다. 내가 사용하는 코드는 아래 코드입니다sizeof()의 결과로 int를 출력 할 수 없습니다.
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
char binaryPath[MAX_PATH];
GetModuleFileName(NULL, binaryPath, MAX_PATH);
int r = sizeof(binaryPath);
return 0;
}
어쨌든, 그 코드는 제대로 컴파일되어 실행됩니다. 문제는 binaryPath 변수를 사용하려고 시도 할 때 발생합니다. 메인 블록에서 r을 할당/선언 한 후 화면에 r을 출력하려고하면
이진이 실행을 멈 춥니 다. Windows에서는 "Cpp.exe"가 작동을 멈췄으며 프로그램을 강제 종료해야합니다. 나는 절대적으로 이유를 모른다.
나는
#include <iostream>
using namespace std;
int main() {
int r = 7;
cout << sizeof(r);
return 0;
}
결과는 동일합니다 아래의 프로그램처럼, 훨씬 더 간단 버전을 시도 할 경우에도 마찬가지입니다. sizeof()를 사용하여 내가 원하는 것을 꽤 많이 할 수는 있지만, 시도하고 출력하자마자 멈추게된다.
Windows 8을 실행하는 Mac에서 MinGW를 사용하고 있습니다. (b/c win8은 과거 C++을 깨뜨린 것이 확실하지 않은 과거의 문제를 일으켰습니다).
도움이 절실히 필요합니다.
감사합니다.
알려줄 내용이 확실하지 않습니다. 이것은 g ++로 컴파일 할 때 잘 동작하며 Mac OS X 및 [ideone의 g ++] (http://ideone.com/tr8m5j)에서 실행됩니다. 문제는 실행 파일이 어떻게 만들어 졌는지, 컴파일러/링커에 대한 설정 또는 사용중인 iostream 라이브러리에있을 수 있습니다. –
충돌은 잘못된 라이브러리에 대한 링크로 인해 발생할 수 있습니다. 내 생각 엔 스트림 클래스가 서로 다른 크기의 컴파일 플래그를 사용하여 빌드 된 것입니다. –
"Windows 8을 실행하는 Mac에서 MinGW를 사용하고 있습니다."- 귀하의 문제를보기 시작합니다 :-) – paxdiablo