C++ PSTR如何接收不以逗号分隔的多个字符串?
我正在研究ENC28J60的Arduino库的rbb_服务器示例中的代码(如果可以的话,我会把链接放在这里),我注意到这段wierd代码: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/
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");