C++ PSTR如何接收不以逗号分隔的多个字符串?

C++ PSTR如何接收不以逗号分隔的多个字符串?,c++,c,string,macros,arduino,C++,C,String,Macros,Arduino,我正在研究ENC28J60的Arduino库的rbb_服务器示例中的代码(如果可以的话,我会把链接放在这里),我注意到这段wierd代码: static word homePage() { long t = millis() / 1000; word h = t / 3600; byte m = (t / 60) % 60; byte s = t % 60; bfill = ether.tcpOffset(); bfill.emit_p(PSTR( "HTTP/

我正在研究ENC28J60的Arduino库的rbb_服务器示例中的代码(如果可以的话,我会把链接放在这里),我注意到这段wierd代码:

 static word homePage() {
  long t = millis() / 1000;
  word h = t / 3600;
  byte m = (t / 60) % 60;
  byte s = t % 60;
  bfill = ether.tcpOffset();
  bfill.emit_p(PSTR(
    "HTTP/1.0 200 OK\r\n"
    "Content-Type: text/html\r\n"
    "Pragma: no-cache\r\n"
    "\r\n"
    "<meta http-equiv='refresh' content='1'/>"
    "<title>RBBB server</title>" 
    "<h1>$D$D:$D$D:$D$D</h1>"),
      h/10, h%10, m/10, m%10, s/10, s%10);
  return bfill.position();
}
您可以在Arduino的IDE文件夹中的pgmspace.h文件中找到它

这是怎么编译的

谢谢

C(C99,6.4.5p4)中有一条规则,规定两个相邻的字符串文字(可能位于不同的行上):

连接为一个字符串文字,并等效于:

"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n"

这是在翻译阶段6由预处理器完成的。

相邻的字符串文本由编译器自动连接成单个字符串文本

printf("H" "e" "l" "l" "o");
相当于

printf("Hello");
printf("H" "e" "l" "l" "o");
printf("Hello");