[英]What are the different ways to call a function?
调用函数的不同方法有哪些? 例如,我可以在没有()的情况下调用函数吗?
你可以按名字打电话:
function_name(args);
你可以通过函数指针调用:
void (*function_pointer)(int, char *) = ...;
(*function_pointer)(3, "moo"); // classic function pointer syntax
function_pointer(3, "moo"); // alternate syntax which obscures that it's using a function pointer
不,你不能在不使用()
情况下调用函数。 你可以通过使用宏来隐藏()
但只是隐藏它们的位置; 最后你必须在某处使用()
。
你可以使用宏:
#define f func()
但这不是推荐的方式。 您的代码将很难阅读和理解。
在C中, ()
是函数调用语法。 没有它你就无法调用它。
有几种迂腐的方法可以在不使用()的情况下调用函数。 命名函数“main”(具有正确的参数和返回类型)是一种好方法。 您可以将其注册为中断处理程序。 您可以通过粉碎堆栈来欺骗编译器跳入它( 不是可移植的, 不推荐使用,在64位x86上使用gcc):
#include <stdio.h>
void foo()
{
printf("In foo\n");
}
void bar()
{
long long a;
long long *b = &a;
void (*fooptr)() = &foo;
b[2] = (long long)fooptr;
}
int main()
{
bar();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.