为什么在C中这种动态数组分配有效?

时间:2019-05-27 14:50:10

标签: c esp8266

我一直给人一种印象,在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工具链。

0 个答案:

没有答案