C++命名空间namspace解析——“cout”未声明的标识符,“cin”未声明的标识符

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41518597/article/details/84106730

首先我们先看一下下面这段代码运行时的情况(注意按ctrl+F5 运行)

#include<iostream>
int main()
{

	return 0;
}

运行结果如下
是一个没有任何结果的窗口
在这里插入图片描述

现在我们再加上一段输出代码

cout<<"hello"<<endl;

会发现编译运行时出现了错误,显示wei3声明的标识符其实就是少了工作空间 std的引入
如果引入工作空间 就不会出现下面错误

using namespace std;

在这里插入图片描述

在C++中可以引入已经定义好了的工作空间,同时也可以自己定义工作空间。上面的代码是等同于下面这段代码的

#include<iostream>
int main()
{
	std::cout<<"hello"<<std::endl;
	return 0;
}

运行出来的结果完全一样,也就是说在整个程序前面引入这个std工作空间,就可以节省繁琐的“std::”,这样便于程序员编写代码。

比如我现在自定义两个命名空间A和B
然后分别对其进行相应的输出
代码如下

#include<iostream>
using namespace std;
namespace A{
	int x=1;
	void f(){
		cout<<"A"<<endl;
	}
}
namespace B{
	int x=2;
	void f(){
		cout<<"B"<<endl;
	}
}
int main()
{
	cout<<A::x<<endl;
	B::f();
	return 0;
}

输出结果为
1
B

另外给出一个实例供参考

namespace实例
#include <iostream>
#include <stdlib.h>
using namespace std;
namespace   sp            //填写命名空间的关键字
{
    int x = 105;
}
int main()
{
    // 使用bool类型定义isOdd,作为状态位
        bool isOdd ;       
	
	if(sp::x % 2 == 0)
	{
		//改变状态位的值,使其为false
        isOdd=false;
	}
	else
	{
	    //改变状态位的值,使其为true
        isOdd = true;
	}
    // 判断状态位的值
	if(isOdd==true)
	{
		// 如果状态位的值为true,则打印变量x是奇数
        cout<<"变量x是奇数"<<endl;
	}
	else
	{
        // 如果状态位的值为false,则打印变量x是偶数
        cout<<"变量x是偶数"<<endl;
		
	}
	return 0;
}
展开阅读全文

未声明标识符 的问题.

06-23

这是个DLL 挂钩rnrn// KeybdHook.cpp : 定义 DLL 的初始化例程。rn//rn#pragma data_seg(".SHARDAT")rnstatic HWND ghWndMain = 0;rnstatic HHOK ghKeyHook = NULL;rn#pragma data_seg()rn HINSTANCE ghInstance = 0;rn HOOKPROC glpfnHookProc = 0;rnrn#include "stdafx.h"rn#include "KeybdHook.h"rn#include ".\keybdhook.h"rnrn#ifdef _DEBUGrn#define new DEBUG_NEWrn#endifrnrnLRESULT EXPORTED_DLL_FUNCTION KbdHookProc (int nCode, WPARAM wParam, LPARAM lParam)rnrn BOOL bHandledKeystroke = FALSE;rnrn if(((DWORD)lParam & 0x40000000) && (HC_ACTION == nCode))rn rn switch (wParam)rn rn case VK_F10:rn AfxMessageBox("捕获F10");rn bHandledKeystroke = TRUE;rn break;rnrn default:rn break;rn rn rnrn return (bHandledKeystroke?TRUE:CallNextHookEx (ghKeyHook, nCode, wParam ,lParam));rnrnrnBOOL EXPORTED_DLL_FUNCTION InstallKeyboardHook (HWND hWnd)rnrn BOOL bSuccess = FALSE;rn if(!ghKeyHook)rn rn ghWndMain = hWnd;rn glpfnHookProc = (HOOKPROC)KbdHookProc;rnrn bSuccess = (NULL != (ghKeyHook = SetWindowsHookEx (WH_KEYBOARD, glpfnHookProc, ghInstance, NULL)));rn rnrn return bSuccess;rnrnrnBOOL EXPORTED_DLL_FUNCTION DeInstallKeyboardHook (HWND hWnd)rnrn if(ghKeyHook)rn rn if(TRUE == (0 != UnhookWindowsHookEx(ghKeyHook)))rn rn ghKeyHook = NULL;rn rn rnrn return ( NULL == ghKeyHook);rnrnrnc:\Documents and Settings\dyt\My Documents\Visual Studio Projects\KeybdHook\KeybdHook.cpp(36) : error C2065: “ghKeyHook” : 未声明的标识符rnc:\Documents and Settings\dyt\My Documents\Visual Studio Projects\KeybdHook\KeybdHook.cpp(42) : error C3861: “ghKeyHook”: 即使使用参数相关的查找,也未找到标识符rnc:\Documents and Settings\dyt\My Documents\Visual Studio Projects\KeybdHook\KeybdHook.cpp(44) : error C2065: “ghWndMain” : 未声明的标识符rnc:\Documents and Settings\dyt\My Documents\Visual Studio Projects\KeybdHook\KeybdHook.cpp(45) : error C2065: “glpfnHookProc” : 未声明的标识符rnc:\Documents and Settings\dyt\My Documents\Visual Studio Projects\KeybdHook\KeybdHook.cpp(47) : error C2065: “ghInstance” : 未声明的标识符rnrn我在顶头定义了,为什么说未声名 论坛

没有更多推荐了,返回首页