컴파일러 경고 (수준 4) C4840
variadic 함수의 인수로 서 'type' 클래스를 이식 불가능 하 게 사용 합니다.
설명
Variadic 함수에 전달 되는 클래스 또는 구조체는 일반적으로 copyable 이어야 합니다. 해당 개체를 전달할 때 컴파일러는 비트 복사본을 만들기만 하고 생성자 또는 소멸자를 호출하지 않습니다.
이 경고는 Visual Studio 2017부터 사용할 수 있습니다.
예제
다음 샘플에서는 C4840를 생성 하 고 수정 하는 방법을 보여 줍니다.
// C4840.cpp
// compile by using: cl /EHsc /W4 C4840.cpp
#include <stdio.h>
int main()
{
struct S {
S(int i) : i(i) {}
S(const S& other) : i(other.i) {}
operator int() { return i; }
private:
int i;
} s(0);
printf("%i\n", s); // warning C4840 : non-portable use of class 'main::S'
// as an argument to a variadic function
// To correct the error, you can perform a static cast
// to convert the object before passing it:
printf("%i\n", static_cast<int>(s));
}
를 사용 하 여 작성 및 관리 되는 문자열의 경우 CStringW 제공 된를 operator LPCWSTR() 사용 하 여 CStringW 개체를 서식 문자열에 필요한 C 스타일 문자열 포인터로 캐스팅 해야 합니다.
CStringW str1;
CStringW str2;
// ...
str1.Format("%s", static_cast<LPCWSTR>(str2));
'Programming > MFC' 카테고리의 다른 글
c1xx : fatal error C1060: 컴파일러의 힙 공간이 부족합니다. (0) | 2021.08.10 |
---|---|
MFC D8040 : 자식 프로세스를 만들거나 통신하는 동안 오류가 발생했습니다 (0) | 2021.04.29 |
wave player class (0) | 2017.09.27 |
연결 프로그램 변경 [레지스트리 편집] (0) | 2017.09.27 |
연결 프로그램 변경 [레지스트리 편집] (0) | 2017.09.27 |