在 c++ std11 中是否有相当于 Python 的“通行证”?
Is there an equivalent of Python's `pass` in c++ std11?
我想要一个什么都不做但可以在需要语句的地方使用的语句。通行证: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;
No.您没有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
在类似的上下文中做类似的事情。
希望有帮助。
正如评论中所述,不支持这样做,因为它没有意义。条件运算符旨在计算两个操作数之一。二。没有之一。
仅在其中一种情况下滥用操作员执行某些条件操作是不行的。事实上,最好两个操作数都没有任何副作用。这不是"做某事"的结构,而是"给我两件事之一"的结构。
在这方面,如果Python支持你说它支持的东西,那么它将在C++不支持的地方被破坏。碰巧的是,Python实际上也不支持它,毕竟。
改为编写if
语句:
if (x > y) {
do_something();
}
else {
/* Unimplemented at the moment */
}
这太荒谬了,但你可能会想到使用"nop"指令。
在 Linux 中
void pass()
{
__asm__("nop");
}
在窗口中
void pass()
{
__asm{nop};
}
我认为C++只是一个空行(;)将相当于"通行证">
正如@bboonn所建议的:
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__
还是多加了一条指令,这是可以理解
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- 在 c++ std11 中是否有相当于 Python 的“通行证”?