多次元配列の渡し方 C言語


icc (intel compiler classic)から2024年リリースのintel oneapi に入っているicxに移行したとき、コンパイルはできるものの、実行すると変な挙動をしたので、そのメモ。

C99では、多次元配列の渡し方として、

void function(int size1, int size2, double matrix[size1][size2]);

のような実装が認められている。iccでは動いていたが、icxに切り替えるとうまくいかなかった。

icxではC99の機能をすべて実装してあるわけではないのかもしれない…??

配列は基本的にmallocなどで動的確保して用意し、渡すのが安全なのかも…?

void function(double **matrix, int size1, int size2);

みたいな感じで。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です