相关疑难解决方法(0)

"int main(){(([[(){})());}"有效的C++是怎样的?

我最近遇到了以下深奥的代码.

int main(){(([](){})());}
Run Code Online (Sandbox Code Playgroud)

按如下方式重新格式化以使其更具可读性:

int main(){
    (([](){})());   //  Um... what?!?!
}
Run Code Online (Sandbox Code Playgroud)

但我无法理解如何(([](){})())有效的代码.

  • 它看起来不像函数指针语法.
  • 它不能是一些运算符重载技巧.代码按原样编译.

谷歌对这种全符号搜索没有多大帮助.但它在Visual Studio 2010中编译并且不输出任何内容.没有错误,也没有警告.所以它看起来像有效的代码.

我从未见过任何在JavascriptC函数指针之外如此奇怪的有效代码.

有人可以解释这是如何有效的C++?

c++ syntax lambda c++11

264
推荐指数
1
解决办法
1万
查看次数

30
推荐指数
6
解决办法
2610
查看次数

解密C/C++函数指针typedef的工具

我记得曾经看过一个网站,它破译了复杂的C++ typedef,包括函数指针,返回函数指针返回一个带有...的数组.

它会将这些定义变成可读的英文文本:»指向函数的指针,返回一个int指针数组,取一个long和一个回调函数(取一个int)作为参数«.(沿着那条线)

typedef int * (*f)(long, void (*)(int))[];
Run Code Online (Sandbox Code Playgroud)

有人还记得那个工具/网站吗?任何提示都非常感谢

c++ typedef function-pointers

4
推荐指数
1
解决办法
1265
查看次数

在C中使用函数指针的Typedef?

我是C的新手,我很难阅读这行代码并理解它:

typedef void (*getnxtbyte_t)(void *stream);
Run Code Online (Sandbox Code Playgroud)

从环顾四周,我现在知道它是指向一个函数的指针.但任何人都可以帮助我进一步澄清这一点吗?这种新型号的名称是什么?它指向什么功能?是函数的参数(void* stream)吗?

提前致谢!

c typedef function-pointers

2
推荐指数
1
解决办法
801
查看次数

在哪台机器可以使用(*(void(*)())0)()?

C陷阱和陷阱2.1我认为0总是无效的地址.他怎么能把功能放在那个位置?

c

2
推荐指数
1
解决办法
125
查看次数

标签 统计

c ×3

c++ ×3

function-pointers ×2

typedef ×2

c++11 ×1

lambda ×1

pointers ×1

syntax ×1