我希望得到一个什么也不做但可以在需要语句的地方使用的声明。通过链接:http://docs.python.org/release/2.5.2/ref/pass.html
编辑:刚看到这个:如何在C/C++中执行无操作?
#define pass (void)0
问题已解决,谢谢!
我希望得到一个什么也不做但可以在需要语句的地方使用的声明。通过链接:http://docs.python.org/release/2.5.2/ref/pass.html
编辑:刚看到这个:如何在C/C++中执行无操作?
#define pass (void)0
问题已解决,谢谢!
一个空语句(只有分号),或者空括号应该适用于您的情况
例如Python中的
while some_condition(): # presumably one that eventually turns false
pass
可以翻译成以下的C++代码:
while (/* some condition */)
;
或者
while (/* some condition */) {}
也许对于三元运算符的情况,你可以这样做:
x > y ? do_something() : true;
1 if True else pass
是无效的。 - mgilsonC++
在所有语义结构中都没有像pass
这样的东西。 - Prashant Kumar_nop
?这不是在std c中吗? - Joran Beasley不,你没有 pass
或等效的 关键字。但是你可以写出等效的代码,而不需要任何这样的关键字。
def f():
pass
成为
void f() {}
和
class C:
pass
成为
class C {};
在不同的情境中,不同的语法可能会有用。例如,
class MyError(Exception):
pass
变成
class MyError : public std::exception
{
using std::exception::exception; //inherits constructor!
};
正如您所见,在此上下文中,您必须编写using
以从基类继承构造函数。 在Python中,pass
在类似的上下文中执行类似的操作。
希望这有所帮助。
if (x > y) {
do_something();
}
else {
/* Unimplemented at the moment */
}
if
/else
块传达了在两个动作之间进行选择的意图,而条件运算符则传达了在两个值之间进行选择的意图。这就是为什么条件运算符返回一个值,而 if
/else
块则不返回任何值的原因。 - Ian McLaird我知道这听起来太荒谬了,但你可以考虑使用 "nop" 指令。
在Linux中
void pass()
{
__asm__("nop");
}
void pass()
{
__asm{nop};
}
if (some_flag)
; // Do nothing
else if (some_other_flag)
do_something();
void f() { ; }
void g() { }
void h() { __asm__("nop"); }
所有结果几乎产生相同的汇编输出(x86 64)。
f
和g
都会产生:
push rbp
mov rbp, rsp
nop
pop rbp
ret
当 g
给出时
push rbp
mov rbp, rsp
nop
nop
pop rbp
ret
(多了一个nop
)
在我的测试中,似乎仅包含__asm__("nop")
的循环比;
慢大约50%。
当使用-O1
标志或更高版本时,情况仍然如此 - f
和g
变成
ret
并且 h
变成了
nop
ret
当使用循环时,例如for(;;){}
,__asm__
仍然会添加一个额外的指令,这是可以理解的。
if
。三目运算符是一个返回值的表达式,而不是if
的简写。如果你在类似 C++ 中使用像这样的代码:x > y ? getInt() : getString()
,你会遇到许多不同的问题。因此,你应该学习正确的编程惯用语,而不是简单地将你的代码翻译过来。 - David Rodríguez - dribeasif (condition) do_something();
。 - Joran Beasleydo_something_else()
。 - Joran Beasley