我一直给人一种印象,在C语言中,当您分配数组时,数组大小必须是一个常量表达式。
但是,我在esp8266 http客户端中遇到了一些代码,该客户端似乎使用在运行时计算的值进行数组分配,并且它可以编译并运行得很好,我不知道为什么。
以下是指向相关.c文件的链接:https://github.com/Caerbannog/esphttpclient/blob/master/httpclient.c
如果您查看第265行,则会看到:
char buf[69 + strlen(method) + strlen(req->path) + strlen(req->hostname) +
strlen(req->headers) + strlen(post_headers)];
我是否无法理解C的细微之处,使这行代码可以工作,或者我使用的特定编译器的某些功能允许这样做?我正在使用xtensa-lx106-elf-gcc工具链。