C++中关于#include,文件保护和符号重定义

C++中关于#include,文件保护和符号重定义,第1张

文件保护只能保护在一个cpp文件内,同一个头文件不会被两次include

而你的问题是,在两个cpp文件内都include了这个头文件。头文件中应该只放函数的声明而不能放函数的耐笑定义,如果放了定义,就像你写的那样,两个cpp文件include了这个头文件,那么就会出现两次定义旁亩局的问题。可以重复声明不能重复定义,所以会运让报错。

filebuf::openprot //默认的兼容共享方式

filebuf::sh_none  //独占,不共享

filebuf::sh_read  //读共享

filebuf::sh_write //写共享

以上方式仅旧版VC中支持,新版VC在share.h中为Win32项目定义了如下方式

_SH_DENYRW 0x10 /* deny read/write mode*/

_SH_DENYWR 0x20 /* deny write mode */

_SH_DENYRD 0x30 /* deny read mode */

_SH_DENYNO 0x40 /* deny none mode */

_SH_SECURE 0x80 /* secure mode */

示例:fstream a_file(test.dat, ios::in | ios::binary, _SH_DENYRW)

此时使用其他程序打开test.dat将显示“此文件已被其他进程占用”


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存