C++中#PRAGMA ONCE和#DEFINE是干什么用的
一般用于头文件开始,预编译时,只插入一次此头文件。
例如 头文件 "grandfather.h"
#pragma once
#ifndef GRANDFATHER_H
#define GRANDFATHER_H
struct foo
{
int member;
};
#endif /* GRANDFATHER_H */
当这段程序多次被include ( 多文件编译,相互include时会遇到),只插入和编译一次。
#pragma once 的编译速度 比 #ifndef GRANDFATHER_H #define GRANDFATHER_H ..快,
所以往往 全用。
#pragma once 是个预处理指令,在头文件的最开始加入这条指令表示:这个头文件只被编译一次
这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。 #pragma once是编译器相关的,就是说即使这个编译系统上有效,但在其他编译系统也不一定可以,不过现在基本上已经是每个编译器都有这个杂注了。 #ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式c++ 头文件中加入 #ifnodef #define #engif 有什么用
那么,在程序中,填入age,在预编译的时候,编译器就会自动将age替换成5,注意,这个是直接替换,所以如果#define X 3+1,那么在程序中输入5*X,编译器就会将其替换成5*3+1,这种情况一般会这样定义#define X (3+1)ifdef、#ifndef、#endif:一般#ifdef\/#ifndef和#endif是成对出现的。ifdef顾名...
c获取电脑硬盘序列号电脑如何查看硬盘序列号
5. 怎样在vc++中获得硬盘的序列号 vc++中获得硬盘的序列号可以参考如下代码:\/\/MyDiskInfo.h头文件#pragma onceclass MyDiskInfo{public:MyDiskInfo(void);public:~MyDiskInfo(void);public: int GetDiskInfo(int driver=0); char szModelNumber[64]; char szSerialNumber[64]; };\/\/MyDiskInfo.cpp文件\/\/ ...
请教:error C2143:syntax error missing before <class
09.#pragma once 10.#endif \/\/ _MSC_VER > 1000 11.12.#include "splitterDoc.h"13.14.class CSplitterView : public CView 15.{ 16.protected: \/\/ create from serialization only 17. CSplitterView();18. DECLARE_DYNCREATE(CSplitterView)再次编译,OK!这时程序顺利通过,问题解决了。
VC++ 关于include指令
其次,根据逻辑顺序包含。比如A派生于C,那么可以在A.H中直接先写上#include "c.h",之后就不用声明了。最后,在A.CPP中使用B 和 B.CPP中使用A,都没有问题,这个只要CPP中定义包含顺序就可以了。如果A B定义中互为友元,那么就需要采用.H中的声明或者包含方式,有了第一个定义,不怕循环包含...
vc++6.0中 有没有头文件<stdbool.h>
没有 ifndef _STDBOOL_H define _STDBOOL_H \/* stdbool.h - C99 standard header *\/ if __POCC__ >= 500 pragma once endif \/* macros *\/ define bool _Bool define false 0 define true 1 define __bool_true_false_are_defined 1 endif \/* _STDBOOL_H *\/ ...
从C++解析的字符串中提取数字
#pragma once\/\/ CXMLFindor 命令目标class CXMLFindor : public CObject{private : typedef struct Link_s { char m_sNode[256+1]; char m_sAttr[256+1]; char m_sAttrValue[256+1]; struct Link_s *Next; }LINK_S,*PTR_LINK_S; PTR_LINK_S m_LinkHand;public: CXMLFindor(); virtual ~CXM...
求VC++MFC做的登录实例程序
define AFX_LOGINDLG_H__5FFFF6A5_8CF5_411A_9796_A597EB8FE9A4__INCLUDED_#if _MSC_VER > 1000 pragma once endif \/\/ _MSC_VER > 1000 \/\/ LoginDlg.h : header file \/\/ include "BtnST.h"\/\/\/ \/\/ CLoginDlg dialog typedef struct _tagUser { char name[18];int oper;char ...
VC++ 对话框中添加编辑框就不能显示的原因
Edit的派生类,添加OnLButtonDown消息,我把派生类给你写好了 头文件(SubEdit.h):if _MSC_VER > 1000 pragma once endif class CSubEdit : public CEdit { public:CSubEdit();public:virtual ~CSubEdit();protected:afx_msg void OnLButtonDown(UINT nFlags, CPoint point);DECLARE_MESSAGE_MAP()...
谁能告诉我windows.h中有哪些函数,他们有哪些功能???
pragma message ("")pragma message ("See the SDK release notes for more information.")pragma message ("")endif ifndef _INC_WINDOWS define _INC_WINDOWS if defined (_MSC_VER) && (_MSC_VER >= 1020)pragma once endif \/* If defined, the following flags inhibit definition of the...
怎样在VC++中实现播放MP3背景音乐
#pragma once#endif \/\/ _MSC_VER > 1000#include "mmsystem.h"#pragma comment (lib,"winmm.lib")class CSound { long m_device; MIXERCONTROL m_volCtrl;private: bool CSound::GetDevice(int dev,HMIXER &hmixer);public: CSound(); virtual ~CSound(); \/\/operate... bool GetVolumeControl(HMIXER ...