繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM