extern
In Quelldatei A definierte Funktionen sind in anderen Quelldateien unsichtbar (d. h. nicht zugänglich). Um diese Funktion in Quelldatei B aufzurufen, sollte eine externe Deklaration zum Kopf von B hinzugefügt werden:
extern functionprototyp
Auf diese Weise in die Quelldatei Diese Funktion kann auch in B aufgerufen werden.
Achten Sie hier auf den Unterschied in der Formulierung: Bei A handelt es sich um eine Definition, bei B um eine Aussage. Eine Funktion kann (und muss) nur in einer Quelldatei definiert werden, kann aber in mehreren anderen Quelldateien deklariert werden. Die Definition bewirkt die Speicherzuweisung, wodurch diese Entität tatsächlich erstellt wird. Die Deklaration bewirkt keine Speicherzuweisung. Um eine grobe Analogie zu geben: Nach der Deklaration in Quelldatei B ist es so, als würde man ein Fenster in B öffnen, damit es die Funktion in A sehen kann.
#i nclude "stdafx.h"
1.extern wird häufig in Variablendeklarationen verwendet. Sie können es in *.c-Dateien global verwenden Wenn diese globale Variable referenziert werden soll, platzieren Sie sie in *.h und deklarieren Sie sie mit extern.
2. Wenn die Funktionsdeklaration das Schlüsselwort extern enthält, bedeutet dies nur, dass die Funktion möglicherweise in anderen Quelldateien definiert ist und keine anderen Auswirkungen hat. Das heißt, es gibt keinen Unterschied zwischen den folgenden beiden Funktionsdeklarationen:
extern int f(); und int f(); === ===========
Wenn die C/CPP-Datei, die die Funktion definiert, die definierte Funktion in der entsprechenden Header-Datei deklariert, können Sie diese Funktionen in anderen C/CPP-Dateien verwenden Es muss nur die Header-Datei eingefügt werden.
Wenn Sie die Header-Datei nicht einschließen möchten, deklarieren Sie die Funktion in c/cpp. Im Allgemeinen wird „extern“ nicht zum Deklarieren von in dieser Datei definierten Funktionen verwendet, und „extern“ wird zum Deklarieren von in anderen Dateien definierten Funktionen verwendet. Auf diese Weise besteht keine Notwendigkeit, Funktionen aufzurufen, die in anderen Dateien in dieser Datei definiert sind Um die Header-Datei einzubinden
include „*.h“ um die Funktion zu deklarieren, können Sie sie direkt nach der Deklaration verwenden.
====================================== ========= ============================== ========== ============================== ========== ============================== ========== ) ///extern.cpp Der Inhalt ist wie folgt:
//extern.cpp: Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#i nclude "stdafx.h"
extern print(char *p);
int main (int argc, char* argv[])
{
char *p="hello world!";
print(p);
return 0; Der Inhalt von print.cpp lautet wie folgt
#i nclude "stdafx.h"
#i nclude "stdio.h"
print(char *s)
{
printf(" Die Zeichenfolge ist %s/n",s);
}
Dadurch kann das Programm normal ausgeführt und die Ergebnisse ausgegeben werden. Wenn Sie „extern“ entfernen, kann das Programm weiterhin normal ausgeführt werden.
Es ist ersichtlich, dass „extern“ in der Funktionsdeklaration entbehrlich ist. Es wird nur verwendet, um anzugeben, ob die Funktion in dieser Datei oder in einer anderen Datei definiert ist. Solange Ihre Funktion vor der Verwendung deklariert wird, müssen Sie die Header-Datei nicht einschließen.
Das Problem „unerwartetes Ende der Datei beim Suchen nach vorkompilierter Header-Direktive“ tritt häufig in VC++6.0 auf?
So lösen Sie das Problem „Schwerwiegender Fehler C1010: „Unerwartetes Ende der Datei beim Suchen nach vorkompilierter Header-Direktive“, das häufig in VC++6.0 auftritt?
Ich denke, jeder ist in VC6. 0 Ich stoße oft auf dieses Problem. Wie kann ich es lösen?
Zum Beispiel: Das Semikolon hinter der Klasse und der Struktur
ist tief versteckt. Das Problem mit Makros und .h-Dateien erfordert einige Überlegungen. 2. Es muss sein, dass einige Ihrer Definitionen in der Klasse einige spezielle Konstanten in jeder Klasse gelöscht wurden : .h:
#if !defined(AFX_CHILDFRM_H__54CA89DD_BA94_11D4_94D7_0010B503C2EA__INCLUDED_)
#define AFX_CHILDFRM_H__54CA89DD_BA94_11D4_94D7_00 10B503 C2EA__INCLUDED_
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ fügt unmittelbar vor der vorherigen Zeile zusätzliche Deklarationen ein.
#endif // !definiert(AFX_MAINFRM_H__54CA89DB_BA94_11D4_94D7_0010B503C2EA__INCLUDED_)
Sie können eine neue Klasse erstellen und diese dorthin kopieren oder sie einfach hinzufügen .
5.
(2). (3). Einzelauswahl [Keine vorgefertigten Header verwenden]
(4) [OK]
Wenn das oben Gesagte das Problem nicht löst, lesen Sie bitte den folgenden Inhalt. Um einen solchen Fehler zu verursachen, ist es möglich, dass Sie gerade eine .H- und .CPP-Datei hinzugefügt haben Die obige Anleitung.
Der Name enthält „stdafx.h“. Wenn Sie den Strukturtyp in mehreren Dateien gleichzeitig verwenden möchten, müssen Sie auf jeden Fall weiterlesen > Typ Die Definition unterscheidet sich von der Definition einer Typvariablen. Die Typdefinition
ist für den Compiler sichtbar und
generiert keinen ausführbaren Code.
Die Variablendefinition bezieht sich auf die tatsächliche Existenz eines solchen Inhalts in der ausführbaren Datei.
Da es mühsam ist, die Typdefinition klar in jeder .c-Datei zu schreiben,
und in .c wird eine einfache Schreibweise verwendet , wie struct A a;
Definieren Sie Variablen wie diese,
muss nicht die gesamte Typbeschreibung erneut schreiben.
------------------------------ --- ---------------------------
XX.cpp wird hinzugefügt. struct str st_r;
XXXXX.cpp plus #i nclude "XX.h"
Dann verwenden Sie extern direkt struct str st_r; Wie man extern verwendet, achten Sie bitte auf die chinesische PHP-Website!