[英]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.