首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSVC常量正确性:虚假C4090警告

MSVC常量正确性:虚假C4090警告
EN

Stack Overflow用户
提问于 2020-06-08 18:17:43
回答 1查看 72关注 0票数 0

MSVC发出关于常量正确性的警告C4090,而GCC和Clang都接受它:Compiler Explorer

代码语言:javascript
复制
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的情况下解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 18:32:22

您可以在调用它的行前禁用此警告,然后在https://godbolt.org/z/W-XR-Q之后将其恢复

代码语言:javascript
复制
#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 ) 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62259834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档