【发布时间】:2022-01-11 17:37:39
【问题描述】:
我的代码出现错误。代码编译,但我仍然想摆脱警告。我查看了 stackoverflow 和 google 并单击了将我带到 microsoft.com 页面的警告,并对其进行了解释,但我没有看到如何摆脱它们的具体示例。
这是 C++ 代码和警告。
void WINAPI ServiceMain(DWORD dwArgc, LPWSTR* lpszArgv);
VOID main() noexcept
{
CONST SERVICE_TABLE_ENTRY ste[] = { {L"MyService", ServiceMain}, {NULL, NULL} };
//C26485 Expression 'ste': No array to pointer decay (bounds.3).
StartServiceCtrlDispatcherW(ste);
}
// C26429 Symbol 'lpszArgv' is never tested for nullness, it can be marked as not_null (f.23).
// C26461 The pointer argument 'lpszArgv' for function 'ServiceMain' can be marked as a pointer to const (con.3).
VOID WINAPI ServiceMain(DWORD dwArgc, LPWSTR* lpszArgv)
{
// C26481 Don't use pointer arithmetic. Use span instead (bounds.1).
ssh = RegisterServiceCtrlHandlerExW(lpszArgv[0], (LPHANDLER_FUNCTION_EX) Service_Ctrl, 0);
...
}
感谢任何帮助。
【问题讨论】:
-
这些是来自 MS 代码分析器的消息(注意它们在消息中没有说警告或错误)。它们不是错误,而是来自 MS 的规则驱动代码分析器的消息。我通常不会默认打开它(分析器),但偶尔会打开它并对每个报告做出判断。例如C26481 NO_POINTER_ARITHMETIC
-
请针对每个代码分析警告提出一个问题。你会发现有些(甚至可能全部)以前被问过和回答过。
标签: c++ windows service warnings compiler-warnings