C 调用函数的不同方式有哪些?
调用函数的不同方式有哪些?例如,我可以不使用()调用函数吗?您可以使用宏:C 调用函数的不同方式有哪些?,c,C,调用函数的不同方式有哪些?例如,我可以不使用()调用函数吗?您可以使用宏: #define f func() 但这不是一个推荐的方法。您的代码将很难阅读和理解。您可以按名称调用: function_name(args); 您可以通过函数指针调用: void (*function_pointer)(int, char *) = ...; (*function_pointer)(3, "moo"); // classic function pointer syntax function_po
#define f func()
但这不是一个推荐的方法。您的代码将很难阅读和理解。您可以按名称调用:
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
不,如果不使用
()
,则无法调用函数。您可以使用宏来隐藏()
,但这只会隐藏它们所在的位置;最后,您必须在某个地方使用()
。在C中,()
是函数调用语法。没有函数就不能调用函数。不使用()调用函数有几种迂腐的方法。将函数命名为“main”(使用正确的参数和返回类型)是一种好方法。您可以将其注册为中断处理程序。您可以通过破坏堆栈来诱使编译器跳入其中(非可移植和非推荐,在64位x86上与gcc一起使用):
#包括
void foo()
{
printf(“在foo\n中”);
}
空条()
{
长长的;
长*b=&a;
无效(*fooptr)(=&foo;
b[2]=(长-长)fooptr;
}
int main()
{
bar();
}
难道这样做不会使你邪恶吗?它只关于C还是C++?问C++,有一种近似的方法来调用函数而不使用(),使用重载操作符。YEP,尝试声明变量名<代码> f>代码>现在:谢谢,你明白我的问题,伟大的答案,但这不是我想要的想法…再次感谢。也许最好不要理解这些黑暗魔法。在任何情况下,这些技术之前都应该有一些基本的汇编程序。
#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();
}