簡體   English   中英

MSVC const 正確性:虛假 C4090 警告

[英]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視為常量而不是常量。

這個錯誤顯然是非常古老的 知道如何在不關閉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 ) 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM