6

C++可执行文件绝对路径值与VS安全检查 - yuitoTDF

 1 year ago
source link: https://www.cnblogs.com/yuito/p/17030233.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前几天写新项目需要用到程序所在绝对路径的时候,发现网上居然一点相关分享都没有。

:_pgmptr

翻箱倒柜找出了几本教程,发现了一个叫_pgmptr的东西。
_pgmptr

进去看了一下,在stdlib.h里拓展到了函数__p__pgmptr(),函数原型:

_CRT_INSECURE_DEPRECATE_GLOBALS(_get_pgmptr ) _ACRTIMP char** __cdecl __p__pgmptr (void);

返回值为char**,也就是普通的字符串数组。

:VS安全检查

赶紧放到项目里试一试,结果却报错了。

VS安全检查

定睛一看,原来是Visual Studio的安全检查不让这个“可能”越界的函数过编译。一般来说,改用它提示的安全函数就可以过,可这次居然没有安全函数...
于是乎,要么找别的函数, 要么绕过安全检查。我选择了后者,根据错误提示定义安全宏:

#define _CRT_SECURE_NO_WARNINGS

别急着拷,先往下看...

还是不行

定义了安全宏之后,还是报了同样的错...不知道你们会不会,反正我是这样
那么,要绕过安全检查,就得另辟蹊径了。

项目属性

在解决方案资源管理器中右键项目,单击属性,进入下方页面

在这里插入图片描述

找到C/C++ -> SDL检查 -> 否(/sdl-)-> 确定
这样,安全检查就被绕过了。

1.程序绝对路径获取:_pgmptr
2.VS安全检查:项目属性 -> C/C++ -> SDL检查 -> 否(/sdl-)


  • 技术讨论QQ:3461670586

Yuito,一个爱学习爱探讨,爱编程爱生活的人


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK