'#define Name x' oder 'const Typ Name=x;'
-
DaRealC_Coder schrieb:
SirLant schrieb:
Warum wurde in C "früher" immer #define X 2 statt const int X = 2; verwendet?
Genaugenommen ist letztere sogar besser, da nicht an jeder Stelle nen Temp
Objekt erzeugt werden muss.
Hab ich ehrlichgesagt noch nie verstanden, wieso die das immer verwendenWeil es const int in C erst seit C99 gibt afaik. (Falls das Müll ist, dann schlagt mich bitte.)
Nö. const gab es auch in C89. Es hat nur nicht die Bedeutung des C++ const. In C89 ist eine als const-deklarierte Variable insbesondere keine Compile-Zeit-Konstante. Sprich:
const int n = 22; int arr[n];
ist *kein* gültiges C89, wohl aber gültiges C++.
-
#include <errno.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> /* sockaddr_in structure */ #include <netdb.h> /* /etc/hosts table entries */ #define TCP_PORT 25 #define MAX_ZEICHEN 4096
WARUM nimm man hier defines fuer den TCP_PORT.
Weil es C ist warscheinlich.
-
Raptor schrieb:
WARUM nimm man hier defines fuer den TCP_PORT.
Weil es C ist warscheinlich.Ja, das ist C - ist ja auch unschwer zu erkennen, oder?
-
Ja, das ist C - ist ja auch unschwer zu erkennen, oder?
Nein, sag bloss.
In der OOP bzw. C++ wuerde man es dann mitconst int tcp_port=25; const int max_zeichen=4096
machen, wenn ich jetzt aus diesem Thread etwas gelernt habe.
-
Raptor schrieb:
Nein, sag bloss.
Ja. zB an dem struct vor sockaddr_in oder daran, dass nirgendwo ein const vorkommt.
In der OOP bzw. C++ wuerde man es dann mit
const int tcp_port=25; const int max_zeichen=4096
machen, wenn ich jetzt aus diesem Thread etwas gelernt habe.
hat nix mit OOP zu tun, aber in C++ wuerde man es so machen.
-
lol, das war jetzt nicht ernst gemeint. eher ironisch.
aber trotzdem danke.MfG
Raptor
-
Stimmt eigentlich das Geruecht, dass Makros aufgrund des simplen Textersatzes schneller sind, als Variablen?
-
Raptor schrieb:
Stimmt eigentlich das Geruecht, dass Makros aufgrund des simplen Textersatzes schneller sind, als Variablen?
im falle von const?
ja, aber nur, solange du dem compiler das optimieren verboten hast.
-
Was pasiert eig. beim der Compiler-Optimierung?
Wie funktioniert das?
-
Nein. Man kann von einem optimierenden Compiler erwarten, dass er Konstanten an Ort und Stelle einsetzt. Das ist eine sehr einfache und grundlegende Optimierung, es dürfte kaum ernsthafte Compiler geben, die das nicht beherrschen (vll MSVC Standard, der ja keinen Optimierer haben soll ...)
EDIT: hmpf, zu langsam ... ich bin ohne Optimierungen compiliert scheint mir
-
Hi!
Mein Prof sagt immer das C (ansi-c89 lernen wir) keine echten Konstanten bietet, wie HumeSikkins schon mehr oder weniger schrieb. Also das dies nur über defines möglich ist und const unveränderbare Variablen sind. Wo ist also der Unterschied zum const aus C und zum const aus C++? In C++ sind das ja echte Konstanten, wie ich das verstanden habe.
Code-Hacker