사용 VS버전은 2022 17.2.4입니다.
코드 문법상 오류는 감지되지 않는데
첨부된 스크린샷처럼 디버깅 실행을 실시하면 오류가 발생하면서 컴파일이 중단됩니다
&에 L-Value가 있어야한다고 하는데요
혹시나 몰라서 선생님의 예제로도 돌려봤는데 동일한 오류가 발생하더라구요
버전이 달라져서인지 해결방법이 있는지 궁금합니다
안녕하세요 게임클래스 입니다.
해당 스크린샷을 보았는데요 L-value(구분의 편의상 대문자로작성할께요)와 R-value의 차이에 대한 이해에 도움을 드려야 할 것 같습니다.
예를들어
int a;
a = 0;
이라고 변수를 선언하고 값을 대입했을때.
a를 L-value , 0을 R-value라고 합니다.
C2102 에러의 경우 MSDN에서 찾아보면 ['연산자 주소( & )에 피연산자로 l 값이 있어야 합니다.]
라는 에러는 L-value로 넣어줘야 되는경우가 있습니다.
D3DXMatrixLookAtLH 함수의 D3DXVECTOR3의 주소가 들어가는 3개 인자값을 L-value로 변환하여 넣어보시면 좋을것 같습니다.
Ex>
D3DXVECTOR3 View2 = { 0, 0, 0 };
D3DXVECTOR3 View3( 0, 0, 0 );
D3DXMatrixLookAtLH(&View, &View2, &View3, &View4)
와 같은 방식으로 진행해 보시면 될것 같습니다.
.다른방법으로는 준수모드라는 것이 있습니다.
l-value 에러는 vs2019 16 8 부터 적용된 정합성 경고 때문인데요.
다음과 같은 방법으로 준수모드를 끄면 문제 없으나 메모리 관리에 능숙하지 않다면 추천하지 않는 방법입니다.
프로젝트 우클릭을 통하여 속성으로 들어가신다음에
구성속성 -> 문자 집합 -> 유니코드 문자 집합 사용으로 변경
구성속성 -> C/C++ -> 언어 -> 준수모드 -> 아니오/permissive로 변경
이렇게 2개를 세팅해 주시면 해당 에러 없이 가능 합니다.
감사합니다~