c++ - 这是正确的 C++0x 代码吗?

标签 c++ lambda c++11

在 GCC 4.6 中试过这个,它编译和链接,但在 MacOS 上的运行时给出了“总线错误”消息。 VS2010 甚至不编译它。

但问题是,这真的应该在标准 C++0x 中工作吗?

#include <cstdio>
int (*main)()=[]()->int{printf("HEY!\n");return 0;};

是的,它试图做的是将“main”定义为 lambda 函数。

最佳答案

这不是有效的 C++ 程序,因为符号 main 未定义为函数,而是指向函数的指针。这就是您遇到段错误的原因——运行时正在尝试执行指针。

关于c++ - 这是正确的 C++0x 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583447/

相关文章:

c++ - 在 unsigned int 中使用第一位作为标志

C++ 主文件不显示所有内容

c++ - 在 C++ 中将队列复制到 vector 是错误的

lambda - 使用 lambda 参数链接方法的约定是什么?

function - Emacs Lisp 可以将 lambda 形式分配给 Scheme 之类的变量吗?

c++ - 在 C++ 中,另外两个不同的共享对象可以从第三个共享对象访问 Singleton 吗?

c++ - 你如何从 Howard Hinnant 日期中得到小数秒

c++ - 最后 Hook 程序

c# - 引用列表项构造 C# Lambda 表达式

c++ - 模板类中运算符 [] 的可变模板重载