2014-09-24 72 views
1

我將如何能夠以特定的方式使用數組中的函數。現在,我有它設置如下:像東西在函數中的函數

typedef void (*func_ptr)(void); 
const func_ptr functions[] = {a, b}; 

inline void a(void) 
{ 
    something = blah; 
} 

inline void b(void) 
{ 
    anotherthing = blahblah; 
} 

我就在想,如果有縮短這個了一下,也許是這樣一種方式:

const func_ptr functions[] = {(void)(something = blah;), (void)(anotherthing = blahblah;)}; 

內聯函數a和b只包含一行代碼,它設置了一些#define

+2

德一樣的東西......,P – Coffee 2014-09-24 15:22:46

+2

我不認爲你可以做,在C基本上你想要的是在函數指針數組的初始化中創建匿名函數。我認爲你可以在C++中用boost :: bind和/或匿名函數/ lambda表達式來做到這一點。 – skimon 2014-09-24 15:25:04

回答

2

在C中你不能有匿名函數。

在C++ 11雖然,非捕獲lambda表達式衰變爲普通函數指針,這樣就可以做到:

typedef void (*func_ptr)(void); 
const func_ptr functions[] = { 
    []() { something = blah; }, 
    []() { anotherthing = blahblah; } 
}; 
相關問題