簡體   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