草庐IT

null_unspecified

全部标签

c++ - 强制允许取消引用 NULL 指针

我有一个非常古老(且庞大)的Win32项目,该项目通过将取消引用的指针强制转换为指针来使用NULL指针进行大量检查。像这样:int*x=NULL;//somewhere//...codeif(NULL==&(*(int*)x)//somewhereelsereturn;是的,我知道这段代码很愚蠢,需要重构。但由于代码量巨大,这是不可能的。现在我需要在Xcode的MacOSSierra下编译这个项目,这会导致大问题......事实证明,在Release模式下(通过代码优化)条件以不正确的行为执行(所谓的未定义行为,因为取消引用NULL指针)。根据thisdocumentforGCC有一个

c++ - #define NULL 空

#ifndefNULL#defineNULLNULL#endif此代码在gcc中编译,没有警告/错误。有人可以解释预处理器在这里做什么吗? 最佳答案 编译器在任何地方看到文本“NULL”,它都会用文本“NULL”替换它。这就像在您的代码中搜索并替换“NULL”并替换为“NULL”。不违法,只是很奇怪:) 关于c++-#defineNULL空,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - 如何使用#define 定义 NULL

我想在我的程序中重新定义NULL,例如#defineMYNULL((void*)0)但是这个定义在下面的语句中不起作用:char*ch=MYNULL;Error:cannotconvertfromvoid*tochar*定义NULL的最佳方式是什么? 最佳答案 #defineMYNULLNULL是最安全的,我认为没有理由这样做,但如果你真的想要,请继续。以下是C和C++分别执行此操作的方式:#defineNULL0//C++#defineNULL((void*)0)//C一般来说,为NULL定义0是一个坏习惯,你实际上希望它成为语言

c++ - 为什么 null std::optional 被认为小于任何值,而不是更多

让nullstd::optional小于任何保持值是否有任何数学意义?或者它只是为了保持一致性而制作的,如果它是“更多”而不是“更少”就不会有任何区别? 最佳答案 直接来自theproposal(强调我的):Anumberofwaysofincludingthedisengagedstateincomparisonshavebeensuggested.Theonesproposed,havebeencraftedsuchthattheaxiomsofequivalenceandstrictweakorderingarepreserv

c++ - GetDC(NULL) 获取主监视器或虚拟屏幕?

环顾网络,我发现大多数人认为GetDC(NULL)将为整个主要监视器(左上角为0,0的监视器)获取设备上下文。但是,我感觉大多数人只是这么说,因为GetDC的msdn页面可能就是这么说的。但是,如果您查看以下两页(至少这两页),似乎在说GetDC(NULL)返回一个覆盖整个虚拟屏幕的设备上下文(包含每个连接到系统的显示器)。(1)https://www.microsoft.com/msj/0697/monitor/monitor.aspx->在页面中搜索“ThisgetstheRECTofthevirtualdesktop”并查看该语句周围的位(特别是其上方的GetDC(NULL))。

c++ - 表达式f()>g()的值,当f&g修改同一个全局变量undefined或unspecified时?

更新:根据用户ecatmur的标记,它是InC99,isf()+g()undefinedormerelyunspecified?的拷贝(尽管问题询问的是C99,但C++的答案不变)。答案是:未指定(对于这两种情况)。考虑以下C++14代码片段:inti=0;intx(){i++;returni;}inty(){i++;returni;}boolz=(x()>y());//unspecifiedorundefined?z的值只是未指定,还是未定义的行为?根据我的理解(如果我错了请更正),这样的表达式:i++>i++将是未定义的行为,因为我们在一对序列点之间对同一个变量进行两次变异,但是上

c++ - 为什么C++中没有 "NULL reference"?

我正在阅读C++常见问题解答-“8.6-WhenshouldIusereferences,andwhenshouldIusepointers?”,尤其是以下声明:Usereferenceswhenyoucan,andpointerswhenyouhaveto....Theexceptiontotheaboveiswhereafunction'sparameterorreturnvalueneedsa"sentinel"reference—areferencethatdoesnotrefertoanobject.Thisisusuallybestdonebyreturning/takin

C++:返回 NULL 而不是结构

我有一个结构Foo。在伪代码中:defFindFoo:foo=resultsofsearchfoundFoo=trueifavalidfoohasbeenfoundreturnfooiffoundFooelsesomeErrorCode如何在C++中完成此操作?编辑以消除许多不准确之处。 最佳答案 C++对象永远不能为null或空。指针可以包含空指针值,表示它们不指向任何内容。典型的解决方案是抛出异常。否则,使用指针;只需确保您返回的不是临时地址。我不建议尝试用其他语言的知识自学C++,你会伤害自己。抢一个goodbeginner-

c++ - C++ typedef 语句中的 *unspecified* 是什么意思?

我看到这样的语句typedef*unspecified*value_type;typedef*unspecified*reference;在Boost::multi_array类的声明中。namespaceboost{template>classmulti_array{public://types:typedefValueTypeelement;typedef*unspecified*value_type;typedef*unspecified*reference;typedef*unspecified*const_reference;typedef*unspecified*diffe

kafka生产者发送消息报错 Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

报这个错误是因为kafka里的配置要修改下在config目录下server.properties配置文件这下发送消息就不会一直等待,就可以发送成功了