why is macro acting different while not using namespace std and while using namespace std? : <p>in this below code <b><i>macro 1</i></b> is always fine</p>

<p>but, <b><i>macro 2 </i></b>is not working if statement 1 is not written..why is this happening?</p>

<pre><code>#include&lt;iostream&gt;
#include&lt;conio.h&gt;
//using namespace std;      //--statement 1
#define l std::cout&lt;&lt;       //--macro 1
#define nl std::cout&lt;&lt;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;
}
</code></pre>

<p>when <b><i>statement 1</i></b> is not written  <b><i>macro 2</i></b> is producing a error stating that <i>'[Error]endl was not declared in this scope'</i></p>

<p>if <code>cout&lt;&lt;</code> is the short version of <code>std::cout&lt;&lt;</code>, this error should not happen...i can not understand why is this happening...</p>
