This function definition is found here.:這個函數定義是什麼意思?
static void (*resolve_memcpy (void)) (void)
{
return my_memcpy; // we'll just always select this routine
}
我不明白這意味着什麼。
This function definition is found here.:這個函數定義是什麼意思?
static void (*resolve_memcpy (void)) (void)
{
return my_memcpy; // we'll just always select this routine
}
我不明白這意味着什麼。
resolve_memcpy是一個不帶參數的函數,它返回一個指向不帶參數並返回void的函數的指針。
編輯:這裏有一個鏈接,您可以瞭解更多關於這種類型的語法:http://unixwiz.net/techtips/reading-cdecl.html
它基本上返回一個函數指針,它(大概)你應該使用而不是memcpy
。
// memcpy(...)
resolve_memcpy()(...) // Use this instead.
這是我讀毛茸茸申報標準的方法:先從最左邊的標識和工作的方式了,記住,不存在任何明確的分組()
和[]
綁定*
前:
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
返回的功能。
+1。很好,謝謝。 – nakiya 2010-10-12 04:43:16
所以它在鏈接中說:D。我不明白語法。你能更精心製作嗎? – nakiya 2010-10-11 07:41:29
@nakiya:看我的編輯:) – usta 2010-10-11 07:43:17
感謝您的鏈接。 – nakiya 2010-10-11 08:28:44