调用函数的不同方法有哪些?

时间:2010-06-11 20:16:39

标签: c

调用函数有哪些不同的方法?例如,我可以在没有()?

的情况下调用函数

4 个答案:

答案 0 :(得分:5)

您可以按姓名致电:

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

不,如果不使用(),则无法调用函数。您可以使用宏来隐藏(),但这只是隐藏它们的位置;最后,您必须在某处使用()

答案 1 :(得分:4)

您可以使用宏:

#define f func()

但这不是推荐的方法。您的代码将很难阅读和理解。

答案 2 :(得分:3)

在C中,()函数调用语法。没有它你就无法调用它。

答案 3 :(得分:1)

有几种迂腐的方法可以在不使用()的情况下调用函数。命名函数“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();
}