如何在函数参数中声明变量

时间:2018-01-31 07:49:47

标签: c gcc

我需要在函数参数中声明一个变量。请建议使用语法?

我有这样的事情:

#include <stdio.h>

int foo (int *a)
{
   printf ("%d\n", *a);
}

int main (void)
{
   foo (&(int){int a=1});
   return 0;
}

GCC失败并收到消息:

$ gcc a.c
a.c: In function 'main':
a.c:10: error: expected expression before '{' token

作为一个选项,我可以使用非命名变量(same question at russian version of Stack Overflow):

foo(&(int) { 1 });

并且它有效,但有趣的是为什么编译器接受{1}但不接受{int a=1}

1 个答案:

答案 0 :(得分:3)

你可以使用复合文字 - 我怀疑你尝试的是什么,你几乎是正确的:

<div id="myTab" role="tablist" class="nav nav-tabs">
        <a id="nav-first-tab" data-toggle="tab" href="#nav-first" role="tab" aria-controls="nav-first" aria-expanded="true" class="nav-item nav-link active"><span class="number">1</span></a>
        <a id="nav-second-tab" data-toggle="tab" href="#nav-second" role="tab" aria-controls="nav-second" class="nav-item nav-link"><span class="number">2</span></a>
        <a id="nav-third-tab" data-toggle="tab" href="#nav-third" role="tab" aria-controls="nav-third" class="nav-item nav-link"><span class="number">3</span></a>
</div>

这绝不是一个“常数”,我不知道你是怎么想到的。

请注意,复合文字只有本地(“自动”)存储持续时间 - 如果调用块超出范围,复合文字也是如此。