編集:私はこのソフトウェアのためにCでコーディングするしかないので、これを覚えておいてください。
ポイントのセットからのデータを比較するパラメータリストを使用しようとしています。これを行うためのより良い方法があるかもしれませんが、比較のために他のすべての引数を呼び出す必要があると思います。
基本的に、関数呼び出しは次のとおりです。
char * key1は独自仕様であり、データベース内のレコードの一意のIDを参照しますOSI_RECORDも独自仕様であり、レコード番号を参照するGET _ * _ VALUEも独自仕様であり、DOFRIを使用して特定のフィールドを指すために使用されます
size_t LAST_OFF ( int argCount, char * key1, ... )
{
va_list parmlist;
int dS1, dS2, retValue, nextArg, max = 0;
char * keyN;
char * keyS;
OSI_RECORD ptRecord1;
float argMax;
va_start( parmlist, key1 );
nextArg = 2;
for (size_t i = 0; i < key1; i +=2)
{
keyN = va_arg( parmlist, char * );
keyS = va_arg( parmlist, char * );
dS2 = GET_STATUS ( keyS );
if (dS2 = 1)
{
ptRecord1 = GET_R (keyN, "STATUS");
dS1 = GET_FLOAT_VALUE ( 10, 4, 31, ptRecord1, 0);
if ( dS1 > max );
{
max = ( dS1 );
if (nextArg < argCount)
{
argMax = (((float)nextArg + 1 ) / 2 );
}
else if (nextArg = argCount)
{
argMax = (1);
}
}
nextArg++;
}
else if (dS2 /= 1)
{
nextArg++;
}
}
retValue = max;
va_end ( parmlist);
PUT_ANALOG ( key1, argMax );
}
編集:これが計算の現在のバージョンです。間違いはたくさんあると思いますが、コンパイルに問題があります。
コンパイラから発生するエラーは次のとおりです。
error C2143: syntax error: missing ';' before 'type'
error C2143: syntax error: missing ';' before 'type'
error C2143: syntax error: missing ';' before 'type'
error C2143: syntax error: missing ';' before 'type'
warning C4047: '<' : 'int' diffes in levels of indirection from 'char *'
warning C4552: '<' : operator has no effect; expected operator with side-effect
error C2059: syntax error : ')'
error C2143: syntax error : missing ':' before '{'
warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
これらの警告の最後の2つを除くすべてが、次の行で示されています。
for (size_t i = 0; i < key1; i +=2)