MSVC发出有关const正确性的警告C4090,同时GCC和Clang都接受它:Compiler Explorer。
void dummy(void)
{
int i[42];
int *pi[42];
int const *pci[42];
memset(i, 0, sizeof i);
memset(pi, 0, sizeof pi);
memset(pci, 0, sizeof pci); // warning C4090: 'function': different 'const' qualifiers
}
[似乎MSVC将pci
视为常量,但不是。
此错误显然是awfully old。您知道如何在不关闭C4090的情况下解决此问题吗?
您可以在调用它的行之前禁用此警告,然后在https://godbolt.org/z/W-XR-Q之后将其恢复:
#include <string.h>
void dummy(void)
{
int i[42];
int *pi[42];
const int *pci[42];
memset(i, 0, sizeof i);
memset(pi, 0, sizeof pi);
#pragma warning( push )
#pragma warning( disable : 4090)
memset(pci, 0, sizeof pci); // NO warning C4090
#pragma warning( pop )
}