In C++, è possibile utilizzare la dichiarazione using namespace std;
nei file di implementazione della funzione?utilizzando lo spazio dei nomi nell'implementazione della funzione
risposta
Per "file di implementazione della funzione" si intendono i file .h oi file .cpp? (Normalmente chiamerei file di "implementazione" file .cpp, mentre i file .hp sono file di "interfaccia".)
Se si intende, i file .cpp, quindi, naturalmente. Questo è dove normalmente vedi using namespace std
. Significa che tutto il codice in questo file .cpp ha accesso a std
senza qualificazione.
Se si intendono i file .h, allora si può, ma non si dovrebbe. Se lo includi in un file .h, verrà automaticamente applicato a qualsiasi file .cpp che include il file .h, che potrebbe essere un sacco di file. Generalmente non vuoi dire a altri moduli quali spazi dei nomi da importare. È preferibile inserirlo in ogni file .cpp piuttosto che in un file .h comune.
Sì, intendo i file cpp. Uso il namespace std nel file cpp principale e "std ::" nella funzione .cpp (non nelle funzioni principali), quindi sono curioso di usare namespace nel file cpp della funzione. – Sean
@Sean: non ci sono regole speciali per il file .cpp "principale". Ci sono solo alcune regole sulla funzione 'main' _function_ (può solo' int' eccetera) ma quelle regole non hanno alcun effetto sulle altre funzioni o classi che sono definite nello stesso file. – MSalters
se per "file di implementazione della funzione" si intendono i file .C/.cpp ecc., È possibile, tuttavia, provare ad evitare. Inietta invece solo ciò di cui hai bisogno, ad esempio se hai bisogno di <iostream>
per std::cout
, std::endl
, inserisci questi due in, using std::cout;
e using std::endl;
, ora puoi semplicemente scrivere cout
e endl
.
Sto assumendo vuoi dire qualcosa di simile:
// Foo.h
void SayHello();
...
// Foo.cpp
#include "Foo.h"
using namespace std;
void SayHello()
{
cout << "Hello, world!" << endl;
}
Se questo è il caso, allora sì. Tuttavia, è considerato una cattiva pratica utilizzare using namespace std;
in progetti di dimensioni maggiori.
Proverei a evitare di utilizzare "using namespace" anche nei file di implementazione, se in un secondo momento si desidera utilizzare una singola unità di traduzione si avranno conflitti di nomi. – GameDeveloper
Forse ti piacerebbe sapere anche che puoi inserire using namespace std;
all'interno di un corpo di una funzione, come di seguito. Ciò limiterà l'ambito dell'istruzione using namespace
.
void f() {
using namespace std;
cout << "Foo" << endl;
//..
};
void g() {
cout << "Bar" << endl; //ERROR: cout and endl are not declared in this scope.
};
Questo può essere utile se si desidera utilizzare un sacco di elementi di uno spazio dei nomi nel corpo di una funzione che è scritto in un file di intestazione (che non si dovrebbe di per sé, ma a volte è OK o anche quasi necessario (es. modelli)).
- 1. Best practice: usare lo spazio dei nomi o riaprire lo spazio dei nomi?
- 2. Impossibile trovare lo spazio dei nomi: creazione utilizzando TFS
- 3. Ottieni dinamicamente lo spazio dei nomi della classe PHP
- 4. Perché lo spazio dei nomi std :: this_thread?
- 5. Qual è lo spazio dei nomi 'Standard'?
- 6. Cos'è lo spazio dei nomi in aerospike
- 7. come utilizzare lo spazio dei nomi Yii
- 8. utilizza lo spazio dei nomi in @param
- 9. Deserializing xml, compreso lo spazio dei nomi
- 10. Impossibile trovare lo spazio dei nomi System.Web.UI.DataVisualization.Charting
- 11. Specificare l'assembly per lo spazio dei nomi
- 12. Il nome o lo spazio dei nomi 'Http' non esiste nello spazio dei nomi 'System.Net'
- 13. DataContractSerializer - modifica lo spazio dei nomi e deserializza il file associato allo spazio dei nomi precedente
- 14. Spazio dei nomi XSD nello spazio dei nomi C#
- 15. Nome collisione tra lo spazio dei nomi della libreria C++ e la funzione C linux
- 16. "usa lo spazio dei nomi" all'interno di un altro spazio dei nomi equivalente ad un alias?
- 17. Il nome o lo spazio dei nomi 'Linq' non esiste nello spazio dei nomi 'System.Data'
- 18. Spazio dei nomi ASP.NET
- 19. Come modificare lo spazio dei nomi locale in python
- 20. Corrispondenza spazio dei nomi
- 21. Ottenere elementi con spazio dei nomi predefinito (nessun prefisso dello spazio dei nomi) utilizzando XPath
- 22. Rails 3: Ottieni lo spazio dei nomi corrente?
- 23. Spazio dei nomi per [DataContract]
- 24. Come utilizzare lo spazio dei nomi o digitare alias/abbreviazione?
- 25. Risoluzione di uno spazio dei nomi utilizzando la tastiera
- 26. Rimuovere lo spazio dei nomi in XML dall'API Web ASP.NET
- 27. - Modifica dello spazio dei nomi
- 28. Visibilità dei simboli e spazio dei nomi
- 29. Il nome dello spazio dei nomi 'Oggetti' non esiste nello spazio dei nomi 'System.Data'
- 30. ReSharper: rinominare lo spazio dei nomi non disponibile?
Non riesco davvero a capire la tua domanda ... Potresti dare qualche informazione in più? – Stormenet