在VC中,如何修改文件的只读属性设置

在VC中,如何修改文件的只读属性设置,第1张

//-------------------将只读文件的只读属性去掉-----------------------

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网上有许多产品团购,便宜有口碑


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7958085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存