PVS Studio는 위험한 표현에 대해 불평합니다. 매개 변수 'MSG는'다음 코드 C++ 코드에 괄호로 묶어야합니다위험한 매크로 표현에 대해 불평하는 PVS Studio
#include <iostream>
#define X ("X")
#define Y ("Y")
#define Z ("Z")
#define FRED(msg) msg << Z // <<-- Warning from PVS Studio
#define WILMA(msg) X << FRED(msg)
#define BUDDY(msg) Y << FRED(msg)
int main()
{
std::cout << WILMA(BUDDY("xxxxxx")) << std::endl;
return 0;
}
PVS 스튜디오에서 경고 메시지가이 도구에서 제안 및 추가 괄호 다음
V1003 The macro 'FRED' is a dangerous expression. The parameter 'msg' must be surrounded by parentheses. sample_demo.cpp 7
입니다 : 사용법 #include
이 변경으로 인해 잘못된 코드가 생성 된 것으로 보입니다. 다음과 같이 VS2017에서 컴파일러 오류는 다음과 같습니다
error C2296: '<<': illegal, left operand has type 'const char [2]'
error C2297 : '<<' : illegal, right operand has type 'const char [7]'
질문
내가 PVS 스튜디오에서 제안이 특정 경우에 정확하지 않습니다 확신합니다. 나는 명백한 무언가를 놓치고 도구가 맞습니까? 미리 감사드립니다.
@bartoli : 감사합니다. 그러나 이미 설명한 것과 같은 컴파일러 오류가 발생합니다. – orbitcowboy
https://stackoverflow.com/questions/277258/how-do-i-see-a-c-c-source-file-after-preprocessing-in-visual-studio –