函数调用中的花括号在C中意味着什么?

问题描述 投票:2回答:1

我试图解决K&R C书籍中的练习1-24,您必须在其中创建一个程序,该程序可以检测基本语法错误(括号,方括号等不平衡)。我进行了一些测试,以对分散在系统中的C源文件进行调试。我的程序在文件中遇到此行时检测到错误:

av_opt_set_q  (abuffer_ctx, "time_base", (AVRational ){ 1, INPUT_SAMPLERATE }, AV_OPT_SEARCH_CHILDREN);

我假设,每次遇到常规花括号(外部注释,双引号)时,括号和括号必须保持平衡。正如该错误所示,这是不正确的。不幸的是,我找不到它的意思。谢谢你的帮助。

c curly-braces compound-literals
1个回答
6
投票

 (AVRational ){ 1, INPUT_SAMPLERATE }

compound literal。检查更多有关它here

摘自C11,第6.5.2.5节

后缀表达式,由带括号的类型名和大括号括起来的类型组成初始化程序列表是复合文字。它提供了一个未命名的对象,其值由初始化程序列表提供。

就是说,我看不到括号在这里如何不平衡。这是一种有效的语法,您的工具在做出决定时应考虑这一点。

© www.soinside.com 2019 - 2024. All rights reserved.