![](/img/trans.png)
[英]Can't understand “warning C4090: '=': different 'const' qualifiers” in my c program
[英]MSVC const correctness : spurious C4090 warning
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
视为常量而不是常量。
您可以在调用它的行之前禁用此警告并在之后将其恢复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 )
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.