1 #define ngx_string(str) { sizeof(str) - 1, (u_char) str } 2 3 typedef struct { 4 uint len; 5 u_char* data; 6 }ngx_str_t; 7 8 //1、 9 ngx_str_t test = ngx_string("a"); //不报错 10 11 //2、 12 ngx_str_t test_error; 13 test_error = ngx_string("a"); // gcc报错,g++不报错。
ngx_string 是宏定义,定义变量的时候可以看成直接拿里面的值给变量赋值,声明变量,看成ngx_str_t test = {sizeof("a")-1, "a"},是符合定义的;
而给变量赋值的时候不能一次赋两个值。