2010-06-11 47 views
3

調用函數有哪些不同的方法?例如,我可以不用()調用一個函數嗎?調用函數有哪些不同的方法?

+2

不這樣做,讓你的邪惡? – 2010-06-11 20:20:21

+0

它只是關於C還是關於C++? – 2010-06-11 20:22:35

+0

尋求C++,並且有大量的方法可以在不使用()的情況下調用函數,而使用重載的操作符。 – stusmith 2010-06-11 20:23:13

回答

4

您可以使用宏:

#define f func() 

但這不是一個推薦的方式。您的代碼將很難閱讀和理解。

+3

這是純粹的邪惡。 – Tesserex 2010-06-11 20:22:14

+1

@Tesserex哦,是啊! – INS 2010-06-11 20:23:43

+0

是的,嘗試現在聲明變量名稱'f' :) – 2010-06-11 20:33:28

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 

不,你不能調用一個函數,而無需使用()。你可以通過使用宏來隱藏(),但它只是隱藏它們的位置;最後你必須在某處使用()

3

在C中()函數調用語法。沒有它你不能調用一個函數。

+0

+1無評論/添加 – INS 2010-06-11 20:28:42

1

有幾種迂迴的方式來調用一個函數而不使用()。命名函數「main」(使用正確的參數&返回類型)是一種好方法。您可以將其註冊爲中斷處理程序。您可以通過砸堆棧欺騙編譯成跳進去(便攜和建議,可與海灣合作委員會的64位x86):

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

請評論你的代碼!我不明白它... – drigoSkalWalker 2010-06-12 18:24:26

相關問題