CFileStatus rStatus
CFile::GetStatus(strFileName,rStatus)//获得文件的属性设置
rStatus.m_attribute=rStatus.m_attribute &0x3E//如果文件为只读的,将只读属性去掉
//--------------------------------------------
CFile::SetStatus(strFileName, rStatus )//更改文件的属性设置……}enum Attribute {
normal = 0x00,
//对应的二进制编码是00 0000
readOnly = 0x01,
//对应的二进制编码是00 0001
hidden = 0x02,
//对应的二进制编码是00 0010
system = 0x04,
//对应的二进制编码是00 0100
volume = 0x08,
//对应的二进制编码是00 1000
directory = 0x10,
//对应的二进制编码是01 0000
archive = 0x20
//对应的二进制编码是10 0000}所以取消某个属性的设置,就将相应的二进制编码的“1”位设置为0,然后其他位均为“1”,再转换为十六进制编码,然后进行“&” *** 作即可。如:
VC++下把所有.h,.cpp文件纳入工程,在编译的时候,其实后台调用cl.exe 只是对每个CPP文件单独进行编译,最后共同连接。所以,你include CPP就有问题了。在编译main.cpp 时,由于存在include "fun.cpp",fun的代码被展开,里面的函数被首次编译;
在编译fun.cpp时,再次产生了同名的函数体,所以连接的时候就报告重名。
VC++建议程序员的编程风格是接口与实现分离,就是CPP各自管各自的,.h只是声明cpp中存在的函数和成员,并不真正实现。你的工程应该这样:
1、建立并添加一个文件fun.h,里面:
#if !defined (FUN_CPP_20080616)
#define FUN_CPP_20080616
int fun1(int num1,int num2);
int fun2(int num1,int num2);
#endif
预编译宏定义使得如果在不同的文件中引用这个头文件,相同的对象不会被初始化两次,这是个好习惯。
2、在main.cpp修改
//main.cpp
#include "stdio.h"
#include "fun.h"
typedef int Result
main()
{
int a,b
Result Rfun1,Rfun2
a = 1
b = 2
Rfun1 = fun1(a,b)
Rfun2 = fun2(a,b)
printf("result fun1 %d\n",Rfun1)
printf("result fun2 %d\n",Rfun2)
}
这就可以了!
fun.h只是告诉main.cpp,有这样两个函数存在,至于说在哪儿,不用管,因为连接的时候自然会吧fun.cpp的实现部分挂上去。
建议LZ下载一些范例项目看一看哦!
另外,团IDC网上有许多产品团购,便宜有口碑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)