我正在处理一个使用#define在磁盘上以这种方式声明路径的旧项目:
#define APPPATH "c:\\ProgramPath"
#define SEPARATORPATH "\\"
#define DATAPATH "data"
#define CONFILEFILE "config.dat"代码中大约有上千个地方,它们被用作文字字符串连接,如下所示:
std::ifstream f(APPPATH SEPARATORPATH DATAPATH SEPARATORPATH CONFILEFILE, std::ios::binary);显然,这不是一个完美的方法。我目前的主要问题是硬编码的APPPATH。我希望允许程序从磁盘上的任何目录执行,并将APPPATH替换为可执行位置(GetModuleFileName在Windows上)。
我的问题是,有什么方法可以轻松地做一些事情,而不必修改引用宏的上千行?因为就目前而言,我能找到的唯一方法是将其更改为在启动时初始化的全局const *变量,然后手动替换所有行以在宏列表周围添加strcat()。
发布于 2016-01-25 17:54:30
在我的情况下,将APPPATH从"c:\ProgramPath“替换为”“。工作得很好。如果您的目标不是应用程序路径,则不适用。
https://stackoverflow.com/questions/34949903
复制相似问题