我们可以在 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
我最近遇到了一个高尔夫编码†问题,其中我想到在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