Was ist der Unterschied zwischen globalen Variablen und #define in c

Was ist der Grund, warum es gibt 2 Möglichkeiten :

  1. Globale Variablen
  2. symbolische Konstanten mit #define ?

Damit ich weiß, was #define tut, aber ich weiß nicht, was der Unterschied in der Nutzung ist.
Die situation, die ich tun muss damit ich in der Lage bin, zu entscheiden, mich auf den richtigen opportunitie? Was ist eine der Gelegenheiten, in der Lage zu tun, was die andere nicht ? Ich hoffe, ich konnte verdeutlichen, was ich meine.

  • Globale Variablen können abgerufen und bearbeitet werden-von überall. #define-Konstanten können nicht editiert werden, nur Lesen. Es hat zu tun mit der thread-Sicherheit und der Rückkehr von Funktionen.
  • "Ich weiß, was ein #define macht" Sicher? 😉 Aber das Lesen dieses gcc.gnu.org/onlinedocs/cpp kann Ihnen helfen, erleuchtet zu werden.
  • Ein global variable ist eine variable, die Sie ändern können, ist es Wert, es sei denn, Sie machen es zu einem const,#define ist fester Wert. Es kann nicht geändert werden.
  • Es ist auch nicht unbedingt ein "Wert".
  • #define erfolgt durch den Präprozessor. Es ist nur nur-text-substitution in einem gewissen Sinn. Im Falle von Fehlern, wo Ihr #define-Direktive eingebunden ist der compiler nicht in der Lage sein, um es herauszufinden, und du wirst am Ende mit "kryptischen" Fehlermeldungen. Präprozessor-Direktiven haben Ihren Platz, aber manchmal ist es wahrscheinlich besser, nur stick "const globals
  • Dies ist ein Duplikat zu diesem: stackoverflow.com/q/1674032/694576 oder dieses: stackoverflow.com/q/2611063/694576

InformationsquelleAutor Clock_9 | 2015-05-02
Schreibe einen Kommentar