Hypothraxer @ Gast
2008-12-10, 10:33:46
Ich habe hier einen Algorithmus der in C in den späten 90er Jahren geschrieben wurde. Ich möchte den gerne Debuggen, weil ich dadurch leichter zu den entsprechenden Formeln komme (das Ganze ist in sehr viele Files aufgeteilt).
Jetzt gibt es beim Kompilieren aber zwei Probleme:
Das erste (wohl gravierendere):
/usr/lib/gcc/i386-redhat-linux/4.1.2/include/varargs.h:4:2: error: #error "GCC no longer implements <varargs.h>."
/usr/lib/gcc/i386-redhat-linux/4.1.2/include/varargs.h:5:2: error: #error "Revise your code to use <stdarg.h>."
Das ist auch richtig - das Programm verwendet varargs.h statt stdarg.h. Ich könnte das zwar ändern, das führt aber dazu, dass alle Aufrufe mit
va_start(para);
falsch sind, da nur ein Argument angegeben wird (was für varargs.h richtig, für stdarg.h aber 'falsch' ist - da braucht es 2 Argumente).
Das zweite Problem ist, dass mir bei folgendem ein Syntax-Fehler ausgegeben wird:
#include "m.h"
#include <varargs.h>
COUNT m_setall(va_alist)
va_dcl
{
register va_list para;
register double *data;
M_TYP typ;
register COUNT i;
register COUNT n;
COUNT errflag = 0;
va_start(para);
typ = va_arg(para, M_TYP);
if ((n = m_get_length(typ)) == -1)
errflag = -1;
else {
data = va_arg(para, double *);
for (i = 0; i < n; i++)
*data++ = va_arg(para, double);
}
return(errflag);
}
Und zwar beim va_dcl (und entsprechend bei der Klammer unten). Selbst wenn ich statt varargs.h, stdarg.h verwende, wird mir das als Fehler angekreidet.
../wild/src/m_setall.c:100: error: expected declaration specifiers before ‘va_dcl’
../wild/src/m_setall.c:119: error: expected ‘{’ at end of input
Gibt es eine Möglichkeit, den Code mit neuen GCC Versionen zu kompilieren? Oder muss ich mich, wohl oder übel, durch den Code wühlen? Verändern möchte ich den Code nicht wirklich, da er als 'stabil und korrekt arbeitend' gekennzeichnet wird.
Über Tipps/Hinweise würde ich mich freuen.
Jetzt gibt es beim Kompilieren aber zwei Probleme:
Das erste (wohl gravierendere):
/usr/lib/gcc/i386-redhat-linux/4.1.2/include/varargs.h:4:2: error: #error "GCC no longer implements <varargs.h>."
/usr/lib/gcc/i386-redhat-linux/4.1.2/include/varargs.h:5:2: error: #error "Revise your code to use <stdarg.h>."
Das ist auch richtig - das Programm verwendet varargs.h statt stdarg.h. Ich könnte das zwar ändern, das führt aber dazu, dass alle Aufrufe mit
va_start(para);
falsch sind, da nur ein Argument angegeben wird (was für varargs.h richtig, für stdarg.h aber 'falsch' ist - da braucht es 2 Argumente).
Das zweite Problem ist, dass mir bei folgendem ein Syntax-Fehler ausgegeben wird:
#include "m.h"
#include <varargs.h>
COUNT m_setall(va_alist)
va_dcl
{
register va_list para;
register double *data;
M_TYP typ;
register COUNT i;
register COUNT n;
COUNT errflag = 0;
va_start(para);
typ = va_arg(para, M_TYP);
if ((n = m_get_length(typ)) == -1)
errflag = -1;
else {
data = va_arg(para, double *);
for (i = 0; i < n; i++)
*data++ = va_arg(para, double);
}
return(errflag);
}
Und zwar beim va_dcl (und entsprechend bei der Klammer unten). Selbst wenn ich statt varargs.h, stdarg.h verwende, wird mir das als Fehler angekreidet.
../wild/src/m_setall.c:100: error: expected declaration specifiers before ‘va_dcl’
../wild/src/m_setall.c:119: error: expected ‘{’ at end of input
Gibt es eine Möglichkeit, den Code mit neuen GCC Versionen zu kompilieren? Oder muss ich mich, wohl oder übel, durch den Code wühlen? Verändern möchte ich den Code nicht wirklich, da er als 'stabil und korrekt arbeitend' gekennzeichnet wird.
Über Tipps/Hinweise würde ich mich freuen.