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

Can we declare a function alongside variables in C?

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

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

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


Code Golf 是一种休闲编程形式,其中必须使用尽可能短的程序来解决给定的挑战。减少源代码中的字符数是首要的objective,可维护性和可读性并不重要。请在评论前考虑一下 objective。

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

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

你能做的是:

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

这可能不是你想要的。

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

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

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

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

cout << f << endl;

它的输出将是 i 的地址。

您可以声明函数和变量:

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