2010-10-11 46 views

回答

5

resolve_memcpy是一個不帶參數的函數,它返回一個指向不帶參數並返回void的函數的指針。

編輯:這裏有一個鏈接,您可以瞭解更多關於這種類型的語法:http://unixwiz.net/techtips/reading-cdecl.html

+0

所以它在鏈接中說:D。我不明白語法。你能更精心製作嗎? – nakiya 2010-10-11 07:41:29

+0

@nakiya:看我的編輯:) – usta 2010-10-11 07:43:17

+0

感謝您的鏈接。 – nakiya 2010-10-11 08:28:44

2

我們可以使用cdecl發現:

聲明resolve_memcpy靜態函數(無效)返回函數指針(void)返回void

+0

感謝您的鏈接 – nakiya 2010-10-11 08:29:16

0

它基本上返回一個函數指針,它(大概)你應該使用而不是memcpy

// memcpy(...) 
resolve_memcpy()(...) // Use this instead. 
3

這是我讀毛茸茸申報標準的方法:先從最左邊的標識和工作的方式了,記住,不存在任何明確的分組()[]綁定*前:

   resolve_memcpy    -- resolve_memcpy 
       resolve_memcpy(void)   -- is a function taking no arguments 
      *resolve_memcpy(void)   -- and returning a pointer 
      (*resolve_memcpy(void)) (void) -- to a function taking no arguments 
     void (*resolve_memcpy(void)) (void) -- and returning void 
static void (*resolve_memcpy(void)) (void) -- and is not exported to the linker 

所以返回函數的值是指向另一個函數的指針:

void (*fptr)(void) = resolve_memcpy(); 
fptr(); // or (*fptr)(), if you want to be explicit 

如果你想駕駛你的同事瘋了,你可以寫

resolve_memcpy()(); 

將執行其指針由resolve_memcpy返回的功能。

+0

+1。很好,謝謝。 – nakiya 2010-10-12 04:43:16