Thursday, November 23, 2006
C언어] 실행시 오류(런타임 에러): runtime error R6002 - floating point not loaded
컴파일은 잘 되는데, 컴파일된 실행파일(exe)을 실행하면
runtime error R6002 - floating point not loaded
이런 "런타임 에러"가 나는 경우가 있습니다. 부동소수점 라이브러리 가 실행파일에 포함되지 않았기 때문입니다. 부동소수점 라이브러리는 용량이 크기 때문에 필요한 경우에만 포함시킵니다.
예를 들어 다음과 같은 경우 이런 에러가 납니다:
그리고 위의 경우, 런타임 에러 (floating point...) 와 무관하게, 0.000000 이라는 값이 출력되므로 역시 오류.
다음과 같이 하면 에러가 없습니다:
숫자 2 를 (double) 이렇게 실수로 캐스팅(변환)해 주든지, 2.0 이라고 뒤에 소수점을 붙이면 됩니다.
즉, 소스에서 실수 연산에 대한 무슨 코드가 있어야, 부동 소수점 라이브러리가 포함됩니다.
소스의 내용이 어떻든 강제로 부동 소수점 라이브러리를 포함시키려면 소스에
double dummy = 0.0;
이런 식으로 아무 실수형 변수 하나를 "지역 변수"로 정의해 주면 됩니다. 그러나 이 경우, 컴파일러 설정에 따라, "쓰지 않는 지역 변수가 있다"는 경고가 나올 수 있습니다: "warning C4189: 'dummy' : local variable is initialized but not referenced"
dummy 변수를 무의미한 작업에 한번 사용하면 경고가 없어집니다. 또는 pragma 를 사용하는 방법도 있습니다: ▶▶ C언어 VC++] 특정 경고(워닝)메시지 출력 일시 중지 프라그마; pragma warning Off
runtime error R6002 - floating point not loaded
이런 "런타임 에러"가 나는 경우가 있습니다. 부동소수점 라이브러리 가 실행파일에 포함되지 않았기 때문입니다. 부동소수점 라이브러리는 용량이 크기 때문에 필요한 경우에만 포함시킵니다.
예를 들어 다음과 같은 경우 이런 에러가 납니다:
#include <stdio.h>
int main(void) {
printf("%f\n", 2);
return 0;
}
int main(void) {
printf("%f\n", 2);
return 0;
}
그리고 위의 경우, 런타임 에러 (floating point...) 와 무관하게, 0.000000 이라는 값이 출력되므로 역시 오류.
다음과 같이 하면 에러가 없습니다:
#include <stdio.h>
int main(void) {
printf("%f\n", (double) 2);
// 또는
printf("%f\n", 2.0);
return 0;
}
int main(void) {
printf("%f\n", (double) 2);
// 또는
printf("%f\n", 2.0);
return 0;
}
숫자 2 를 (double) 이렇게 실수로 캐스팅(변환)해 주든지, 2.0 이라고 뒤에 소수점을 붙이면 됩니다.
즉, 소스에서 실수 연산에 대한 무슨 코드가 있어야, 부동 소수점 라이브러리가 포함됩니다.
소스의 내용이 어떻든 강제로 부동 소수점 라이브러리를 포함시키려면 소스에
double dummy = 0.0;
이런 식으로 아무 실수형 변수 하나를 "지역 변수"로 정의해 주면 됩니다. 그러나 이 경우, 컴파일러 설정에 따라, "쓰지 않는 지역 변수가 있다"는 경고가 나올 수 있습니다: "warning C4189: 'dummy' : local variable is initialized but not referenced"
dummy 변수를 무의미한 작업에 한번 사용하면 경고가 없어집니다. 또는 pragma 를 사용하는 방법도 있습니다: ▶▶ C언어 VC++] 특정 경고(워닝)메시지 출력 일시 중지 프라그마; pragma warning Off
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home