Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这是什么类型的函数调用?_C - Fatal编程技术网

C 这是什么类型的函数调用?

C 这是什么类型的函数调用?,c,C,注意some\u name和some\u function之间的空格。我在.c文件中看到了这一点,我想知道这里发生了什么 int some_name some_function{ } 谢谢 编辑: 有关守则是: int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec) { return avcodec_open2(avctx, codec, NULL); } 它来自

注意
some\u name
some\u function
之间的空格。我在
.c
文件中看到了这一点,我想知道这里发生了什么

int some_name some_function{

}
谢谢

编辑:

有关守则是:

int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
    {
        return avcodec_open2(avctx, codec, NULL);
    }

它来自于

,看起来要么是非常难看的宏,要么是非常古老的C。曾几何时,C函数默认返回int,并且总是(取决于实现)、假设一个整数参数或允许一个可变数量的参数

一些调用约定要求调用者提供参数,然后清理它们,这样就可以工作了。(但是,如果被调用方,即“some_函数”,必须为参数本身清理内存,那么参数的数量是固定的)

也就是说,我仍然强烈怀疑一些宏用法,可能除了隐含变量argumetns之外,尽管示例中的命名非常糟糕。原始代码是否包含大写的关键字,或其他表示宏使用的约定?即使没有这些约定,我仍然会怀疑宏


编辑:问题中提供的代码已完全更改。“attribute_align_arg”可能是宏或编译器特定的属性。剩下的是一个完全bog标准的C函数,带有指定的参数。因此,上面Balog的答案在这里是可以接受的。

看起来要么是非常难看的宏,要么是非常古老的C。曾几何时,C函数默认返回int,并且总是(取决于实现)、假设一个整型参数或允许一个可变数量的参数

一些调用约定要求调用者提供参数,然后清理它们,这样就可以工作了。(但是,如果被调用方,即“some_函数”,必须为参数本身清理内存,那么参数的数量是固定的)

也就是说,我仍然强烈怀疑一些宏用法,可能除了隐含变量argumetns之外,尽管示例中的命名非常糟糕。原始代码是否包含大写的关键字,或其他表示宏使用的约定?即使没有这些约定,我仍然会怀疑宏


编辑:问题中提供的代码已完全更改。“attribute_align_arg”可能是宏或编译器特定的属性。剩下的是一个完全bog标准的C函数,带有指定的参数。因此,上面Balog的答案在这里是可以接受的。

其中一部分很可能是一个没有扩展的宏(但提供文档)或一些特殊属性,如stdcall、\uuudeclspec(noreturn)、\uuudeclspec(dllexport)

编辑以反映新信息:

您的定义如下所示:

51 #ifndef attribute_align_arg
52 #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
53 # define attribute_align_arg __attribute__((force_align_arg_pointer))
54 #else
55 # define attribute_align_arg
56 #endif
57 #endif

其中一部分很可能是一个没有扩展的宏(但提供Documentton)或一些特殊属性,如uu stdcall、u declspec(noreturn)、u declspec(dllexport)

编辑以反映新信息:

您的定义如下所示:

51 #ifndef attribute_align_arg
52 #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
53 # define attribute_align_arg __attribute__((force_align_arg_pointer))
54 #else
55 # define attribute_align_arg
56 #endif
57 #endif

看起来像个宏。你能给我们看看真正的代码吗?它可能是一个扩展为零的宏。生成一个预处理的输出文件,以查看实际给编译器的是什么。@0x499602D2,我已经用实际的代码和链接更新了这个问题。不能再推荐了,编译器会扩展所有的宏。看起来像一个宏。你能给我们看一下真正的代码吗?它可能是一个扩展为零的宏。生成一个预处理的输出文件,以查看实际提供给编译器的内容。@0x499602D2,我已用实际代码和链接更新了问题。不建议更多,编译器将扩展所有宏。我正在键入,但注意到你说了同样的话+1我正在打字,但注意到你说了同样的话+1.