高手解释一下,c语言方法嵌套问题

#if AV_GCC_VERSION_AT_LEAST(4,3)
#define av_alloc_size(...) attribute((alloc_size(__VA_ARGS__)))
#else
#define av_alloc_size(...)
#endif

/**
Allocate a memory block for an array with av_mallocz(). *
The allocated memory will have size size * nmemb bytes. *
@param nmemb Number of elements
@param size Size of the single element
@return Pointer to the allocated block, or NULL if the block cannot
be allocated *
@see av_mallocz()
@see av_malloc_array() */ av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) { if (!size || nmemb >= INT_MAX / size) return NULL; return av_mallo
av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
{
    if (!size || nmemb >= INT_MAX / size)
        return NULL;
    return av_mallocz(nmemb * size);
}

allocz(nmemb * size); }
帮我解释一下,C语言的方法嵌套的问题。我是C语言新手,今天看代码突然看到此方法,我有点闹不机密了。有可我描述的有问题,但是这个方法很奇怪,方法声明前头还有方法。到底这个函数有没有返回值?

av_mallocz_array是FFmpeg中的一个典型的分配内存函数,申请nmemb个单个大小为size的内存块,申请生成则返回申请的内存对应地址否则返回NULL,也就是说av_mallocz_array函数返回值是一个指向申请内存的指针,而 av_alloc_size(1, 2)则是FFmpeg中定义的一个宏用来修饰函数返回值,具体实现FFmpeg未给出,个人猜测应该是定义了内存字节对齐等内存具体执行操作等相关吧的

有啊 返回你嵌套方法的返回值

没有返回值,函数类型是void