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