2016-11-17 3 views
-2

in diesem Code unten Makro 1 ist immer feinWarum unterscheidet sich das Makro bei Verwendung von Namespace std und Namespace std nicht?

aber, Makro 2 funktioniert nicht, wenn Anweisung 1 nicht written..why ist das passiert ist?

#include<iostream> 
#include<conio.h> 
//using namespace std;  //--statement 1 
#define l std::cout<<  //--macro 1 
#define nl std::cout<<endl; //--macro 2 
int main(){ 
     l "testing"; 
     nl // this is not working if i dont use statement 1 
     l "a new line"; 
getch(); 
return 0; 
} 

wenn Anweisung 1 nicht geschrieben Makro 2 ist ein Fehler erzeugt die besagt, dass '[Fehler] Endl nicht in diesem Bereich erklärt wurde'

wenn cout<< ist die kurze Version von std::cout<<, sollte dieser Fehler nicht passieren ... ich kann nicht verstehen, warum das passiert ...

+7

'endl' in' std' Namespace ist verwenden. – SingerOfTheFall

+0

fehlt nur die std :: before endl. Es sollte ** std :: endl; ** – banetl

+0

sein Also brauchst du 'std :: endl'. –

Antwort

0

Dies ist nicht die Frage Ihres MACRO.

Das Endl Objekt gehört auch zu den std-Namespace, also entweder Sie

std::cout << std::endl; 

oder

using namespace std; 

cout << endl; 
Verwandte Themen