我最近遇到了一个高尔夫编码†问题,其中我想在int
本身编写一个main
类型的函数,它可以访问main中的所有变量。但是为了减少字符数,我想到了一个函数和一个变量。像这样:
int i,f(){/*function code*/};
我可以这样做吗?如果是/否,那么为什么?
† Code Golf是一种休闲节目,其中必须用尽可能短的节目来解决特定的挑战。减少源代码中的字符数是主要目标,可维护性和可读性并不重要。请在评论之前考虑此目标。
答案 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