我正在研究存储和访问常用数据的最佳方法,然后可以将其用于不同的项目中。与其在每个项目中声明和定义相同的数据,不如将数据存储在一个地方。如果我需要更新数据或添加新数据,这应该很容易。
我尝试了两种方法,但运气不佳。
方法1(带有匹配的.cpp文件的头文件)
data_library.h
#ifndef DATA_LIBRARY_H
#define DATA_LIBRARY_H
extern double motor_torque;
#endif
data_library.cpp
#include "data_library.h"
double motor_torque = 3.6;
new_project.cpp
#include "data_library.h"
int main() {
std::cout << "\nMotor torque is " << motor_torque << "Nm";
}
在Visual Studio中,这将给出错误“ LNK2001:无法解析的外部符号”。
方法2(外部.txt文件)
我很乐意从外部.txt文件中读取文件,但是我担心文件移动位置是否会破坏程序。我希望将所有数据存储在项目/解决方案中。
是否有一种“良好做法”的标准方法?
答案 0 :(得分:0)
请检查您的代码。它对我来说编译很好。
我使用gcc-4.8和:g++ -g -Wall -o new_project new_project.cpp data_library.cpp
data_library.h
#ifndef DATA_LIBRARY_H
#define DATA_LIBRARY_H
extern double motor_torque;
#endif //DATA_LIBRARY_H
data_library.cpp
#include "data_library.h"
double motor_torque = 3.6;
new_project.cpp
#include "data_library.h"
#include <iostream>
int main() {
std::cout << "\nMotor torque is " << motor_torque << " Nm" << std::endl;
return 0;
}
不要忘记在主功能中return
。
关于第二个问题,您可以创建一个包含所有数据的特定命名空间,例如:
database.h
namespace Database {
constexpr double motor_torque = 3.6;
// other data goes here
}
用法:先按#include "database.h"
,然后按std::cout << Database::motor_torque << std::endl;