Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
166 views
in Technique[技术] by (71.8m points)

Is there any way to get the visual studio compiler to emit a warning for this C++ code?

I'd really like to track down bugs of this sort, I don't really care if I get warnings if DoNothing actually does modify the value. Using VS2019, if that makes any difference.

void DoNothing(int&){}

int GetUninitializedInt()
{
    // uninitialized 
    int x;

    DoNothing(x);

    // still uninitialized, compiled with /Wall gives no warning
    return x;
}
question from:https://stackoverflow.com/questions/66052500/is-there-any-way-to-get-the-visual-studio-compiler-to-emit-a-warning-for-this-c

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Actually, the C++ compiler cannot catch such errors. You could only avoid such mistakes artificially. Therefore, I suggest that you increase the warning level to avoid this error as much as possible by setting Properties->C/C++->General->Warning Level.

For this question, you could modify the code:

void DoNothing(const int&){}

//Or

void DoNothing(int){}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...