这段代码中的这个符号是什么意思? []()

What is this notation mean in this code? []()

来自这里的 ESP8266WebServer 文档 https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer 它显示 server.on 像这样的语法

server.on("/", handlerFunction);

我不明白这条线是做什么的。

server.on ( "/admin.html", []() { Serial.println("admin.html"); server.send ( 200, "text/html", PAGE_AdminMainPage );   }  );

我特别不明白[]()是什么。剩下的我明白了。

这就是所谓的 "lambda expression"。这是 C++ 和许多其他语言支持的东西(C 不支持)。

Lambda 表达式用于允许语言操纵函数。在这种情况下,lambda 表达式允许您使用 "anonymous function",这样您就可以将处理程序传递给 server.on(),而无需提前将其声明为具有名称的函数。

[] 部分允许您指定 "captures" - lambda 函数可用的变量。 () 部分是您在声明函数时拥有的正常函数参数列表。 {} 部分当然是函数的代码。

在这种情况下,没有捕获,没有参数,所以[]() { code... }

您可以在 https://en.cppreference.com/w/cpp/language/lambda#Syntax

阅读更多关于 C++ lambda 表达式的信息