提问人: 提问时间:9/12/2021 最后编辑:Remy Lebeau 更新时间:8/21/2023 访问量:6472
警告 C6387 Visual Studio
Warning C6387 Visual Studio
问:
这个警告想告诉我什么?Visual Studio
根据文档,当您将潜在的 null 值传递给参数时,会出现此警告。
但是在调用这些函数之前,我正在检查null。if (hwnd)
if (hwnd) {
GetClientRect(hwnd, (LPRECT)&rMyRect);
ClientToScreen(hwnd, (LPPOINT)&rMyRect.left);
ClientToScreen(hwnd, (LPPOINT)&rMyRect.right);
}
答:
2赞
SoronelHaetir
9/12/2021
#1
测试它的事实无关紧要,编译器没有检测到该测试。 但是,您可以使用:
#pragma warning(suppress : 6387)
在前一行,这将阻止消息(或使用 __Pragma(warning(suppress : 6387)),但我更喜欢 #pragma 形式。
评论
2赞
Jonathan Potter
9/12/2021
这将阻止在编译时生成警告,但我认为它不会阻止“intellisense”警告。
0赞
rturrado
9/12/2021
在抑制之前进行编译指示推送,在调用 之后进行编译指示弹出会更好吗?ClientToScreen
0赞
SoronelHaetir
9/12/2021
#pragma warning(push)/#pragma warning(pop) 仅在 #pragma 与 warning(disable :) 配对时才有意义,而不是 #pragma warning(suppress : ),suppress 是一次性命令,它仅适用于下一行。
1赞
user745535
10/29/2021
#2
作为 IntelliSense 取消划线你尝试删除的内容(而不是编译时警告),看起来没有特定的选项来强制 IntelliSense 忽略该警告。您可以从 Visual Studio 窗口中整体禁用它,在 Tools->Options->Text Editor->C/C++->Advanced 下,查看右侧的“代码分析”部分;在此部分下,将“禁用 C++ 代码分析体验”设置为 True。
评论
0赞
ScienceDiscoverer
7/23/2023
但我不想禁用所有警告,只禁用这个警告!
1赞
Ben Weston
8/14/2022
#3
这就是我仅对受影响代码块禁用警告 6387 的方式;
#pragma warning( push )
#pragma warning( disable : 6387)
GetClientRect(hwnd, (LPRECT)&rMyRect);
ClientToScreen(hwnd, (LPPOINT)&rMyRect.left);
ClientToScreen(hwnd, (LPPOINT)&rMyRect.right);
#pragma warning( pop )
感谢 ScienceDiscoverer 指出我的错误,并且 NULL 实际上被定义为 0。
评论
0赞
ScienceDiscoverer
7/23/2023
否,是否将 din Windows API 定义为 0。 是一头不同的野兽,是的。NULL
nullptr
评论