草庐IT

合法性

全部标签

c++ - 如果没有发生左值到右值的转换,取消引用无效指针是否合法

尽我所能,我见过的最接近的答案是this,有两个完全相反的答案(!)问题很简单,这样合法吗?autop=reinterpret_cast(0xbadface);*p;//legal?我对此事的看法Castingintegertopointer:对可以转换的内容没有限制Indirection:只说明结果是左值。Lifetimes:只说明对象不能做什么,这里没有对象Expressionstatements:*p是丢弃的值表达式Discardedvalueexpressions:不会发生左值到右值的转换Undefined-nessoflvalues:也就是严格的别名规则,仅当左值被转换为右值

c++ - 是>?或 <?任何 C++ 方言中的合法运算符?

我在gcc4.2.1不接受的文件(非连续行)中遇到了以下C++代码行:intframe=blk两者和>?在代码中的各个地方使用。它们似乎是分配两个值中较小(或较大)值的简写,但我从未见过这种运算符组合。关于这是什么的任何想法? 最佳答案 他们被称为minandmaxoperators并且是早期版本gcc中的语言扩展。它们不再受支持。 关于c++-是>?或 https://stackoverflow.com/questions/3949818/

c++ - 是>?或 <?任何 C++ 方言中的合法运算符?

我在gcc4.2.1不接受的文件(非连续行)中遇到了以下C++代码行:intframe=blk两者和>?在代码中的各个地方使用。它们似乎是分配两个值中较小(或较大)值的简写,但我从未见过这种运算符组合。关于这是什么的任何想法? 最佳答案 他们被称为minandmaxoperators并且是早期版本gcc中的语言扩展。它们不再受支持。 关于c++-是>?或 https://stackoverflow.com/questions/3949818/

c++ - 我可以合法地使用重载 operator() 的结构作为 std::upper_bound 的比较吗?

我有这样的结构(类型被简化以延续这一点),生活在std::vector:structRegion{intfirst;intcount;structMetadataregion_metadata;};在vector中,它们按first排序。如果将first和count相加,则得到下一个区域的first;所以基本上这个结构vector描述了连续数字范围的元数据。现在给定一个整数,我想查找元数据。对区域进行排序后,我可以使用std::upper_bound。我是这样实现的:structComp{inlinebooloperator()(constRegion®ion,intindex)

c++ - 我可以合法地使用重载 operator() 的结构作为 std::upper_bound 的比较吗?

我有这样的结构(类型被简化以延续这一点),生活在std::vector:structRegion{intfirst;intcount;structMetadataregion_metadata;};在vector中,它们按first排序。如果将first和count相加,则得到下一个区域的first;所以基本上这个结构vector描述了连续数字范围的元数据。现在给定一个整数,我想查找元数据。对区域进行排序后,我可以使用std::upper_bound。我是这样实现的:structComp{inlinebooloperator()(constRegion®ion,intindex)

c++ - 不评估应用了 sizeof 的表达式是否使得在 C++ 中取消引用 sizeof 内的空指针或无效指针是合法的?

首先,我见过thisquestionaboutC99并且接受的答案引用了C99标准草案中的operandisnotevaluate措辞。我不确定这个答案是否适用于C++03。还有thisquestionaboutC++有一个接受的答案,引用了类似的措辞,并且在某些情况下,会出现未评估的操作数。未计算的操作数不会被计算。措辞。我有这个代码:int*ptr=0;void*buffer=malloc(10*sizeof(*ptr));问题是-sizeof()内是否有空指针取消引用(以及UB)?C++035.3.3/1说sizeof运算符在其操作数的对象表示中产生字节数。操作数要么是一个未计算

c++ - 不评估应用了 sizeof 的表达式是否使得在 C++ 中取消引用 sizeof 内的空指针或无效指针是合法的?

首先,我见过thisquestionaboutC99并且接受的答案引用了C99标准草案中的operandisnotevaluate措辞。我不确定这个答案是否适用于C++03。还有thisquestionaboutC++有一个接受的答案,引用了类似的措辞,并且在某些情况下,会出现未评估的操作数。未计算的操作数不会被计算。措辞。我有这个代码:int*ptr=0;void*buffer=malloc(10*sizeof(*ptr));问题是-sizeof()内是否有空指针取消引用(以及UB)?C++035.3.3/1说sizeof运算符在其操作数的对象表示中产生字节数。操作数要么是一个未计算

c++ - Boost 是否使用合法的 C++ 预处理指令语法?

我的(相对较旧的)C++编译器在this上卡住了Boost中的文件,开头为:#/*Copyright(C)2001#*HousemarqueOy#*http://www.housemarque.com#*#*DistributedundertheBoostSoftwareLicense,Version1.0.(See#*accompanyingfileLICENSE_1_0.txtorcopyat#*http://www.boost.org/LICENSE_1_0.txt)#*/#这真的是合法的C++吗?预处理器标记的语法规则是什么? 最佳答案

c++ - Boost 是否使用合法的 C++ 预处理指令语法?

我的(相对较旧的)C++编译器在this上卡住了Boost中的文件,开头为:#/*Copyright(C)2001#*HousemarqueOy#*http://www.housemarque.com#*#*DistributedundertheBoostSoftwareLicense,Version1.0.(See#*accompanyingfileLICENSE_1_0.txtorcopyat#*http://www.boost.org/LICENSE_1_0.txt)#*/#这真的是合法的C++吗?预处理器标记的语法规则是什么? 最佳答案

c++ - `*--p` 在 C++03 中实际上是否合法(格式正确)

我想知道这段代码示例:intmain(){char*p;chararr[100]="Hello";if((p=arr)[0]=='H')//dostuffs}这段代码实际上在C++03中格式正确吗?我的论点是=的副作用仅在下一个序列点之后完成,并且由于我们正在访问p=arr的结果,因此代码可能不是格式良好,=和[]操作之间没有顺序。我说的对吗?这种行为在C和C++11中得到了很好的定义。这段代码其实来源于MySQL。 最佳答案 当然是定义明确的。分配p=arr何时发生并不重要。您不是在评估p[0],而是在为(p=arr)的结果下标,