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();
}