Heim > php教程 > PHP开发 > Hauptteil

Zusammenfassung zur Verwendung von extern

高洛峰
Freigeben: 2016-12-19 14:33:36
Original
1197 Leute haben es durchsucht

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?

1. Überprüfen Sie, ob „;“, „}“ fehlt.

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 .  

3. Fügen Sie #i nclude „stdafx.h“ zur Kopfzeile hinzu

4. Fügen Sie #i nclude „stdafx.h“ zur ersten Zeile der CPP-Datei hinzu 🎜> oder „Alle neu erstellen“.


5.

(1) – [Einstellungen] – [C/C++] – [Kategorie]

(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

beschreibt nur einen Typ,

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,

wird die Typdefinition im Allgemeinen in .h geschrieben

und in .c wird eine einfache Schreibweise verwendet , wie struct A a;
Definieren Sie Variablen wie diese,
muss nicht die gesamte Typbeschreibung erneut schreiben.

------------------------------ --- ---------------------------

Daher wird die Strukturtypdefinition in XX.h platziert und

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage