不管它的使用有什么潜在的缺陷,我在一个 ffmpeg 头文件中找到了这个代码片段:
/**
* Convenience macro, the return value should be used only directly in
* function arguments but never stand-alone.
*/
#define av_err2str(errnum) \
av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum)
我的问题是关于(char[AV_ERROR_MAX_STRING_SIZE]){0}
.
它本质上是在堆栈上创建一个char[]
数组,并将其堆栈地址作为 a 传递char*
给av_make_error_string()
.
这是 C99 语法。
C++11 之前的语法是否具有等效语法?
这也适用于 C++11 吗?