Guten Morgen,
Ich muste mir einfach mal Luft machen...
Da hab ich natürlich Diskussionen angefacht, war mir schon klar.
Ganz so schlimm mit dem "C" war das auch nicht gemeint, oder doch ?
Na egal ob ich meckere oder nicht, da muss ich halt durch.
Ich habe viele Algorithmen oder Funktionen zunächst in Delphi programmiert und ausgetestet.
Eckparameter, Wie verhält es sich mit Grenzwerten usw. Einfach weil ich hier jahrelange Erfahrung mit habe.
Dann werden sie nach C codiert und leider viel zu oft, funktioniert es dann nicht mehr.
Sicherlich durch meine "Unwissenheit" das will ich garnicht abstreiten.
Irgendwie bekomme ich es dann auch in C hin, aber meist treten da Probleme auf, um die ich mich in Delphi
garnicht kümmern muss. Dann nervt mich auch dieser Datentyp int, weil nirgens festgeschrieben ist, was das eigentlich ist.
Hat der ein Vorzeichen oder Nicht, wieviele Bits hat er denn überhaupt...
Das ist in Delphi einfach alles festgelegt. Ich Suche mir also vorher schon den richtigen Datentyp aus
und Vergleiche funktionieren dann auch IMMER richtig, unabhängig vom Datentyp.
In C kommt es darauf an, was ich für einen Typ gewählt habe und dann geht es oder auch nicht.
Wenn ich dann lese, es ist Compiler abhängig oder Plattformabhängig oder Prozessorabhängig kann ich also davon ausgehen,
daß es NICHT IMMER funktioniert. Dafür möchte ich in meiner Risikoanalyse sicher nicht die Hand ins Feuer legen.
Ich kann natürlich alles vorher "casten" aber das macht die Software auch nicht grade übersichtlich.
Und genau das ist es, was ich in Delphi nicht machen muss. Es funktioniert einfach.
Das ging ja schon damit los, daß meine Firma meinte ich soll in "C" programmieren.
Ein recht dehnbarer Begriff, wie ich feststellen muste.
K&R Ansi-C Turbo-C C89 C90 C94 C95 C99 C11 C# C++ Quick-C C-- Objective-C C-Sharp ISO C99
Hab ich was vergessen ?
Egal, ich habe mich also für ANSI-C entschieden, entspricht wohl auch dem ISO C89/C90 Standard.
So, nun nochmal zwei kleien simple Beispiele:
/*----------------------------------------*/
signed short istWert;
unsigned short sollWert;
int dummy;
int main(void)
{ U32 time;
istWert = -1;
sollWert = 12;
if (istWert < sollWert)
{
dummy = 1; /* hier geht es */
}
}
/*----------------------------------------*/
signed int istWert;
unsigned int sollWert;
int dummy;
int main(void)
{ U32 time;
istWert = -1;
sollWert = 12;
if (istWert < sollWert)
{
dummy = 1; /* !!!!! hier geht es NICHT !!!!! */
}
}
/*----------------------------------------*/
oder:
x := 1 SHL 8 + 1; in Pascal kommt dabei 257 heraus
x = 1 << 8 + 1; in C kommt dabei 512 heraus.......
Problem: Präzedenztabelle, warum hat C eine andere als Delphi ???
Biegeradien von Gurken wurden genormt, Rangfolge von Operatoren nichtTraurig aber wahr.
Apropos wahr, da fällt mir doch gleich der Typ Boolen ein, den es in C nicht gibt.
Auch hier habe ich immer wieder unterschiedliche Varianten gefunden, was die Declaration von TRUE und FALSE betrifft.
ist TRUE jetzt 1 oder !=0 oder !=FALSE ?
/*----------------------------------------*/
und so hab ich ständig Probleme und bin am Suchen woher sie kommen.
Jedesmal gibt es etwas "besonderes" bei "C" was man beachten muss.
Ich wünsche Euch nun ein schönes Wochenende.
PS. Debugger brauche ich auch in anderen Sprachen, das darf man nicht so ernst nehmen.
Lesezeichen