在每个头文件的开头有这些东西,它们代表什么意思,能否删除。
#if !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)
#define AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#if !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)
#define AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
检查标识符当前是否预定义过。
#else
else_语句序列;
#endif
当前表达式为假时, else_语句序列将被编译。
#undef 标识符
如果标识符以前定义过, 那么
#undef
后, 标识符就被编译器认为是未定义的了
这样的东西究竟是代表什么意思,回答问题要有的放矢,别答得我我不好意思看。
这样的东西好像没什么意义,只是个表示或版本序列,
7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD 我觉得Microsoft肯定有它的用意
不过这样:
// file
#ifndef _MY_FILE_2002_7_30_15_TALK_H
#define _MY_FILE_2002_7_30_15_TALK_H#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
............ // code here
#endif好像也行
你也可能把它改成:
#ifndef tmd_afx
#ifndef tnnd_afx
。
只要保证其他文件中别出现这个符号就行了.
那不过是个GUID嘛,鬼才知道下个是什么。
你运行guidgen试试,给你随机产生一大堆。
它是一个版本或序号你能将它改成别的数字吗,还有static char THIS_FILE[] = __FILE__;它是什么意思。难道高手们编程序只知道写,不知道它的具体意思也不管的吗?MICROSOFT在这里肯定有它的用意的难道没有一个人知道吗?
1、
#if !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)
#define AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_
// 文件内容
#endif只是将符号AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_与该头文件捆绑起来而已。如果此次编译包含过此头文件,该符号肯定定义过了,文件内容就不被编译,如果没有,就编译该文件内容。
2、
#pragma once
相同,也是使该文件在一次编译过程中只编译一次。参考MSDN"#pragma"
(#if _MSC_VER > 1000...#endif 是判断当前VC版本是否支持)
3、
#ifdef _DEBUG
#define new DEBUG_NEW
是MFC提供的调试用new算符,提供内存泄漏监测等等。参看:
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
#define DEBUG_NEW new(THIS_FILE, __LINE__)
4、
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
标准C++中,__FILE__,__LINE__是两个预定义宏,分别表示当前源文件路径名和行号,比如执行printf("file=%s,line=%d",__FILE__,__LINE__);试试看。
这两句就是定义了一个static char 数组THIS_FILE[],并把初值赋为当前源文件路径名而已。
1、
#if !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)
#define AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_
// 文件内容
#endif只是将符号AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_与该头文件捆绑起来而已。如果此次编译包含过此头文件,该符号肯定定义过了,文件内容就不被编译,如果没有,就编译该文件内容。
2、
#pragma once
相同,也是使该文件在一次编译过程中只编译一次。参考MSDN"#pragma"
(#if _MSC_VER > 1000...#endif 是判断当前VC版本是否支持)
3、
#ifdef _DEBUG
#define new DEBUG_NEW
是MFC提供的调试用new算符,提供内存泄漏监测等等。参看:
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
#define DEBUG_NEW new(THIS_FILE, __LINE__)
4、
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
标准C++中,__FILE__,__LINE__是两个预定义宏,分别表示当前源文件路径名和行号,比如执行printf("file=%s,line=%d",__FILE__,__LINE__);试试看。
这两句就是定义了一个static char 数组THIS_FILE[],并把初值赋为当前源文件路径名而已。