2013-04-11 29 views
2

今天,我發現這是由一家公司給我一個例子文件:重塑一個動態數組使用功能參數

a_cpu = malloc(..); 
b_cpu = malloc(..); 
c_cpu = malloc(..); 
mySgemm(m, n, k, a, b, a_cpu, b_cpu, c_cpu, true); 

我不能編譯我自己:

void mySgemm(int m, int n, int k, float alpha, float beta, float a[m][n], float b[n][k], float c[m][k], int accelerate) 

與調用類似的例子,坦率地說,我從來沒有見過有人使用函數參數本身來形成一個動態數組。

這是一個合法的電話嗎?


什麼博格爾斯我想到的是,在mySgemm功能,他們訪問abc爲雙陣列,以使陣列基本上被重塑!?

+0

這是不合法的C++。 C++沒有可變大小的數組。這在C99中可能是合法的,取決於如何聲明。 – 2013-04-11 20:10:32

回答

1

不,它不是有效的C++。

我猜的形式參數的聲明將通過在C99,作爲可變參數數組,但我不那麼肯定,對於那些實際參數將被接受

+0

*這些人的實際論點將被接受*他們不會。 – 2013-04-11 20:15:30

+0

所以他們的代碼使用gcc編譯而不是使用g ++編譯。 – Constantin 2013-04-11 20:24:13