草庐IT

不符合

全部标签

c++ - VC是否符合警告C4407的标准?

以下源代码在VC中生成警告C4407,编译器确实生成了不正确的代码。structA1{inta1;};structA2{inta2;};structB:A1,A2{voidf(){std::cout*pb)();(pA->*pa)();}产生的代码不正确,因为在调用pa时没有调整指针pA,导致中的this指针值错误f。但是,代码在GCC和clang中编译良好,没有任何警告(严格别名除外)。指针pA在GCC和clang生成的代码中进行了适当的调整。所以,我想知道标准对此有何看法?上面代码中的转换是否符合标准?或者它是GCC和clang的非标准扩展? 最佳答案

c++ - 在 C++ 中是否有符合标准的方法来执行零拷贝 IPC?

我有一个应用程序当前从流(套接字、命名、管道、标准输入等)中读取数据到char缓冲区,然后使用reinterpret_cast指向一个Foo*(其中Foo是POD)进入缓冲区的中间,然后通过该指针处理缓冲区的内容。现在,这违反了严格的别名规则,但我怀疑它在实践中是否真的会引起问题。不过,在标准C++中是否有公认的方法来执行此操作?因为我们可能会以这种方式传输数百千兆字节,并且在任何情况下都不想引入将此数据从缓冲区复制到具有memcpy的结构中的开销。为了清楚起见,代码看起来像这样:MessageData*msg=newMessageData();while(ipc.we_have_da

c++ - 不透明和匿名枚举声明如何符合标准要求?

我在N3936(条款7.2.2)中读到“在范围枚举的声明中不应省略可选标识符”,所以我尝试了以下代码(嵌入的评论试图解释我的解释)GNU-g++4.8.3和clang3.4.2#includeenumany:int;//unscopedopaquedeclaration:intrequiredbythestandardenum:int{a}t;//unscopedanonymousdeclarationoft(:intnotrequired)enumany:int{b}u;//redlecarationoftype"any"withoneenumeratorenumclassfoo:c

c++ - 我可以将 Visual Studio 编译器设置为符合特定版本的 c++ 吗?

我可以将VisualStudio编译器设置为符合特定版本的c++(例如C++03或C++11)吗?如果是,怎么办?我使用的是VisualStudio2010。 最佳答案 不,你不能。控制语言的唯一标志几乎是/Za(不要使用Microsoft扩展),它太坏了,甚至没有用它测试MSSTL,部分可能无法编译-更不用说WindowsSDKheader了。 关于c++-我可以将VisualStudio编译器设置为符合特定版本的c++吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 这符合严格的别名规则吗?

structTest{voiddoAction(){}};//Createandsaveintoavoid*void*ptr=newTest;//RealusethroughaTest*Test*t=static_cast(ptr);t->doAction();//Deletedeletestatic_cast(ptr);ptr只是用来保存对象的地址,地址只是解引用为对象的真实类型。所以除非它被取消引用到不相关的类型,否则它可以使用严格的别名规则吗? 最佳答案 严格别名仅适用于您尝试通过指针/引用访问对象时。您没有尝试通过void*

c++ - 当代码不严格符合标准时,如何强制 clang 抛出错误?

我正在编写一个C++11库,我希望它能与支持C++11的每个编译器一起使用。我不想不小心编写不标准的代码(例如使用VLA或block等语言扩展)。如何强制clang禁用所有语言扩展,以便我只能编写一致的代码? 最佳答案 尝试oneofthese:-pedantic:Warnonlanguageextensions.-pedantic-errors:Erroronlanguageextensions. 关于c++-当代码不严格符合标准时,如何强制clang抛出错误?,我们在StackOve

未适应行业特定规定:未符合特定行业(如金融、医疗)的安全规定

未适应行业特定规定的风险及解决方法风险管理背景随着网络技术的飞速发展,企业对于网络安全的需求日益增长.然而,由于某些企业在实施安全措施时未能遵循特定的行业标准或法规要求(例如金融行业或者医疗保健领域),可能导致其遭受严重的数据泄露和声誉损失等后果。本文旨在探讨这种问题的原因以及相应的解决之道。原因剖析以下是几个可能的原因:*对行业的相关法规和标准了解不足;*安全团队缺乏经验以及相关专业知识;*没有充分考虑到业务需求和实际应用之间的平衡问题;*对于新技术和新威胁的应对能力不足及时更新方案与对策。综上所述,在实施防火墙政策管理方面应针对以上几点原因进行深入剖析并寻求有效的解决办法以保障企业的信息安

c++ - 当我的编译器不符合标准时如何将数组成员归零

我的编译器(C++Builder6)在语法上允许数组成员初始化(至少为零),但实际上它并没有真正做到这一点。因此,根据上下文,下面给出的示例中的断言会失败。#includestructTT{charb[8];TT():b(){}};voidtestIt(){TTt;assert(t.b[7]==0);}目前不能更改编译器。我的问题是:就future的可移植性和标准一致性而言,“修复”此缺陷的最佳方法是什么?编辑:事实证明,我的第一个示例太短了。它错过了重点,数组的填充级别非常重要,它必须存储在非常靠近数组的地方,即:在同一个类中。即使原始问题仍然存在,我的实际问题模式通常是这样的:st

c++ - 缩写类型名称 long long 与 long long int,是否符合标准?

我看到的大多数代码都使用缩写类型来声明变量,例如longlongx;//longlongintxshorty;//shortinty我浏览了C++11标准(第3.9.1节),类型总是完整声明的,如longlongint。我找不到任何关于缩写类型的提及。我很确定这些缩写符合标准,但想确定是否确实如此。所以我的问题是上面的代码是否完全符合标准。 最佳答案 是的,这是有效的,它包含在draftC++11standard中7.1.6.2简单类型说明符部分说:Table10summarizesthevalidcombinationsofsim

c++ - 标准库是否需要符合标准?

是否要求标准库符合标准?我觉得标准库不符合标准。这种感觉的基础是编译器生成的错误消息。例如,有时GCC会给出以前缀__gxx开头的错误消息以及许多我现在不记得的其他错误消息。但是看到它们让我觉得这些是非常编译器特定的消息,不同的编译器将无法编译GCC提供的标准库,反之亦然。是真的吗?这个问题可以换句话说:一个编译器提供的标准库可以用其他编译器编译吗?当我们说一个特定的编译器符合标准时,它是否自动意味着它附带的标准库也符合标准?或者它只是意味着这个编译器可以编译我们程序员编写的符合标准的代码?我可以在我的项目中使用一个编译器提供的标准库,而我的项目使用不同编译器来编译项目吗?可移植性是否