如何使用作为参数传递的信息构建在其他CPP文件中定义的字符串 我有一个C++程序,它有几个.pp文件,它们有变量声明(大多数是NFS文件系统的路径)和.CPP文件,这些变量的定义是.
在其中一些类型为std::string的变量中,我需要通过在主程序中附加一些作为参数传递的内容来构建其内容。例如: 文件常量.hpp:如何使用作为参数传递的信息构建在其他CPP文件中定义的字符串 我有一个C++程序,它有几个.pp文件,它们有变量声明(大多数是NFS文件系统的路径)和.CPP文件,这些变量的定义是.,c++,C++,在其中一些类型为std::string的变量中,我需要通过在主程序中附加一些作为参数传递的内容来构建其内容。例如: 文件常量.hpp: namespace constants { extern std::string cudnn_version; extern const std::string path_caffe_cuda; extern const std::string path_caffe_cuda_cudnn; } const std::string con
namespace constants {
extern std::string cudnn_version;
extern const std::string path_caffe_cuda;
extern const std::string path_caffe_cuda_cudnn;
}
const std::string constants::path_caffe_cuda = "/nfs/apps/caffe/cuda";
const std::string constants::path_caffe_cuda_cudnn = constants::path_caffe_cuda + "/cudnn" + constants::cudnn_version;
文件常量.cpp:
namespace constants {
extern std::string cudnn_version;
extern const std::string path_caffe_cuda;
extern const std::string path_caffe_cuda_cudnn;
}
const std::string constants::path_caffe_cuda = "/nfs/apps/caffe/cuda";
const std::string constants::path_caffe_cuda_cudnn = constants::path_caffe_cuda + "/cudnn" + constants::cudnn_version;
常量::cudnn_版本的内容在主程序中作为参数询问用户,并在主程序中更新。问题是,当constants::path\u caffe\u cuda\u cudnn变量必须使用constants::cudnn\u版本变量的内容构建时,其内容仍然为空,因此在某种程度上,在constants::cudnn\u版本具有用户传递的内容之前,会对变量path\u caffe\u cuda\u cudnn进行评估
你认为我如何解决这个问题
非常感谢大家。使用函数即可轻松完成:
namespace constants {
extern std::string cudnn_version;
extern const std::string path_caffe_cuda;
inline std::string path_caffe_cuda_cudnn()
{
return constants::path_caffe_cuda + "/cudnn" + constants::cudnn_version;
}
}
只要
path\u caffe\u cuda\u cudnn
在constants::cudnn\u version
初始化之前不被调用,那么它就可以了。与其让它成为变量,不如让它成为一个构造并返回路径的函数?好吧,这是我认为的一种方法(我还有一些其他类似的例子),但在这种情况下,我无法避免将cudnn_version变量作为参数在主程序中传递。。。是否可以构造路径,其中一部分作为参数传递,另一部分从constants.cpp捕获?再次感谢,谢谢!不幸的是,它不起作用,至少在从constants.cpp文件调用函数时,它似乎再次在初始化constants::cudnn_版本之前评估变量的内容,我想我无法控制何时评估其内容。另一个选择是调用这个函数,只要我需要访问变量,我想它可以工作…@TonyD。如果两个变量都已初始化(这是重要的部分),那么它应该可以正常工作。如果一个或两个都没有初始化,那么它当然不会工作。看起来你需要重新思考你的设计。是的,这是重要的部分,也是问题的根源;)因为我需要在cpp文件中定义这些变量(因为有更多的变量是用它们构建的),所以我实际上不知道如何获得更好的设计。再次感谢你的帮助。