在MSVC和海合會(GCC)4.8.3 20140911以下編譯和運行得很好:Ç - 函數指針類型與命名參數
#include <stdio.h>
int func(int a, int b){
return 0;
}
int main(void){
int (*funcPointer)(int a, int b);
funcPointer = func;
printf("funcPointer = %p\n", funcPointer);
return 0;
}
是這樣的行爲明確界定,或者是它是非標準的,它實際上是非法的函數指針類型具有命名參數(即名稱以及類型的參數列表)?
在談論** msvc **和** gcc **(只有兩個實現)你是什麼意思與非標準?據我所知,%p不是打印指針的標準格式(不確定c99和後面)。也不知道你想實現打印函數指針的目的是什麼。 –
@LuisColorado:沒有理由,只是爲了演示目的=) – Mints97
是的,但在這種情況下,不值得談論標準行爲,因爲存在行爲和實現一樣。大多數實現使用函數調用入口點作爲它的指針,所以一旦類型檢查完成(在編譯時),存儲在變量中的值沒有區別 –