NI-DAQ を使用するアプリケーションを開発しています。以下は、プロバイダから提供されたいくつかのメソッドです。
void someMethod(Calibration *cal, float myArray[], float result[])
{
newMethod(&cal->rt,myArray,result,cal->cfg.TempCompEnabled);
}
void newMethod(RTCoefs *coefs, double myArray[],float result[],BOOL tempcomp)
{
float newMyArray[6];
unsigned short i;
for (i=0; i < 6; i++)
{
newMyArray[i]=myArray[i];
}
}
基本的に someMethod() を呼び出して、myArray[] と result[] の両方に 6 つの要素 ( [6] ) を持つ配列を提供します。コードでわかるように、その後 newMethod() が呼び出され、float myArray[6] が double myArray[] 引数に渡されます (このコードの開発者が double 配列の使用を選択した理由がよくわかりません。 newMethod() 内で宣言されている唯一の配列は float 型であるため)。
ここで問題が発生します。for ループの内部では、一部の値は問題なく渡されますが、4 番目と 5 番目の値が newMyArray[] に渡されると、両方の値に対して "-1.#INF0000" が返されます。一見何かガベージな値かと思いましたが、実行のたびに「-1.#INF0000」がついています。
C言語が扱いにくい場合があることは知っていますが、なぜこれが起こっているのか本当にわかりません...