我们可以在C中声​​明一个函数和变量吗?

时间:2015-11-26 18:26:42

标签: c function nested-function

我最近遇到了一个高尔夫编码问题,其中我想在int本身编写一个main类型的函数,它可以访问main中的所有变量。但是为了减少字符数,我想到了一个函数和一个变量。像这样:

int i,f(){/*function code*/};

我可以这样做吗?如果是/否,那么为什么?

Code Golf是一种休闲节目,其中必须用尽可能短的节目来解决特定的挑战。减少源代码中的字符数是主要目标,可维护性和可读性并不重要。请在评论之前考虑此目标。

4 个答案:

答案 0 :(得分:6)

int i,f(){/*function code*/};

在C中,不,你不能不是一个有效的语法。

你可以做的是:

 int i, f();  /* declare an int i and a function f that returns an int */

这可能不是你想要的。

答案 1 :(得分:1)

在C中,不能在另一个函数中定义函数......就这么简单。

如你所说,如果你想访问子函数中的主函数变量..它不可能使用形式变量。但是,它可以通过引用调用来实现,即使用指针变量

答案 2 :(得分:0)

除了@ouah之外,我发现你也可以用函数指针做到这一点。这是一个例子:

int i, (*f)();
f = (int(*)())&i;

cout << f << endl;

这个的输出将是i的地址。

答案 3 :(得分:0)

您可以在变量旁边声明一个函数:

int fgetc(FILE*), getc(FILE*), errno;

但你不能定义一个函数和一个变量作为函数定义的生产规则(参见ISO 9899:2011§6.9.1¶1)阅读

function-definition:
    declaration-specifiers declarator declaration-list(opt) compound-statement

declaration-list:
    declaration
    declaration-list declaration
相关问题