草庐IT

if-cases

全部标签

c++ - 在 gcc 中禁用 "if(0)"消除

如何防止GCC消除if(0)block内的代码?当我使用VisualStudio时,我的调试技巧之一就是将这样的代码放入我的程序中:if(0)do_some_debug_printing_and_checking();然后,当一个断点被命中时,我点击do_some_debug_printing_and_checking()行,选择“设置下一条语句”并强制它执行。当我使用gcc/gdb作为后端时,“设置下一条语句”不再起作用,因为GCC只是从if(0)语句中删除了代码。p>我当然使用-O0标志来禁用优化。我还尝试了-fno-dce-fno-tree-dce标志来明确禁用死代码消除,但它没

c++ - 在 gcc 中禁用 "if(0)"消除

如何防止GCC消除if(0)block内的代码?当我使用VisualStudio时,我的调试技巧之一就是将这样的代码放入我的程序中:if(0)do_some_debug_printing_and_checking();然后,当一个断点被命中时,我点击do_some_debug_printing_and_checking()行,选择“设置下一条语句”并强制它执行。当我使用gcc/gdb作为后端时,“设置下一条语句”不再起作用,因为GCC只是从if(0)语句中删除了代码。p>我当然使用-O0标志来禁用优化。我还尝试了-fno-dce-fno-tree-dce标志来明确禁用死代码消除,但它没

c++ - if-else 语句中的 "equal to"与 "not equal to"运算符

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭6年前。Improvethisquestion在C中编写if-else语句时,如果两者都可以产生相同的结果,是否有理由优先使用运算符“等于”而不是“不等于”?下面的代码提供了上下文。因此,如果参数计数等于2,则将从用户那里检索一个字符串。但是,如果获取任何其他参数值,则会出现错误消息。intmain(intargc,stringargv[]){stringmsg;if(argc==2){msg=GetString();}else{pr

c++ - if-else 语句中的 "equal to"与 "not equal to"运算符

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭6年前。Improvethisquestion在C中编写if-else语句时,如果两者都可以产生相同的结果,是否有理由优先使用运算符“等于”而不是“不等于”?下面的代码提供了上下文。因此,如果参数计数等于2,则将从用户那里检索一个字符串。但是,如果获取任何其他参数值,则会出现错误消息。intmain(intargc,stringargv[]){stringmsg;if(argc==2){msg=GetString();}else{pr

c++ - 带有 enable_if : make default implementation 的部分模板函数特化

使用C++11的enable_if我想为一个函数定义几个专门的实现(例如,基于参数的类型)以及一个默认实现。正确的定义方式是什么?以下示例无法按预期工作,因为调用了“通用”实现,无论T类型如何。#includetemplatevoiddummy(Tt){std::cout::value>::type>voiddummy(Tt){std::cout::value>::type>voiddummy(Tt){std::cout我的最小示例中的一个解决方案是使用明确声明“通用”实现不适用于整数或浮点类型std::enable_if::value&&!std::is_floating_point

c++ - 带有 enable_if : make default implementation 的部分模板函数特化

使用C++11的enable_if我想为一个函数定义几个专门的实现(例如,基于参数的类型)以及一个默认实现。正确的定义方式是什么?以下示例无法按预期工作,因为调用了“通用”实现,无论T类型如何。#includetemplatevoiddummy(Tt){std::cout::value>::type>voiddummy(Tt){std::cout::value>::type>voiddummy(Tt){std::cout我的最小示例中的一个解决方案是使用明确声明“通用”实现不适用于整数或浮点类型std::enable_if::value&&!std::is_floating_point

c++ - 如何评估 'if (A && B)' 语句?

if((A)&&(B)){//dosomething}else//dosomethingelse问题是,如果A为FALSE,该语句是否会立即中断。B甚至会被评估吗?如果B检查数组索引的有效性,当数组实际上为空且元素为零时,我会问这个问题。因此抛出一个段错误,因为我们试图访问超出数组范围的东西。具体if((array.GetElements()>0)&&(array[0]))array[0]->doSomething();else//donothingandreturn如果array[0]实际被评估,这可能是危险的,因为它在没有第一次检查'&&'左侧的情况下出现段错误。Precedenc

c++ - 如何评估 'if (A && B)' 语句?

if((A)&&(B)){//dosomething}else//dosomethingelse问题是,如果A为FALSE,该语句是否会立即中断。B甚至会被评估吗?如果B检查数组索引的有效性,当数组实际上为空且元素为零时,我会问这个问题。因此抛出一个段错误,因为我们试图访问超出数组范围的东西。具体if((array.GetElements()>0)&&(array[0]))array[0]->doSomething();else//donothingandreturn如果array[0]实际被评估,这可能是危险的,因为它在没有第一次检查'&&'左侧的情况下出现段错误。Precedenc

c++ - 没有 "if(...) return ...;"的 "else"是否被认为是好的风格?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前.这段代码:if(someCondition)returndoSomething();returndoSomethingElse();对比这段代码:if(someCondition)returndoSomething();elsereturndoSomethingElse();本质上,它们是相同的,但是什么是最好的风格/性能/...(当然,如果答案中有

c++ - 没有 "if(...) return ...;"的 "else"是否被认为是好的风格?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前.这段代码:if(someCondition)returndoSomething();returndoSomethingElse();对比这段代码:if(someCondition)returndoSomething();elsereturndoSomethingElse();本质上,它们是相同的,但是什么是最好的风格/性能/...(当然,如果答案中有