MSVC发出关于常量正确性的警告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视为常量,而事实并非如此。
这个bug显然是awfully old。你知道如何在不关闭C4090的情况下解决这个问题吗?
发布于 2020-06-08 18:32:22
您可以在调用它的行前禁用此警告,然后在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 )
}https://stackoverflow.com/questions/62259834
复制相似问题