从项目外部访问常用数据

时间:2018-11-13 10:43:32

标签: c++

我正在研究存储和访问常用数据的最佳方法,然后可以将其用于不同的项目中。与其在每个项目中声明和定义相同的数据,不如将数据存储在一个地方。如果我需要更新数据或添加新数据,这应该很容易。

我尝试了两种方法,但运气不佳。


方法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文件中读取文件,但是我担心文件移动位置是否会破坏程序。我希望将所有数据存储在项目/解决方案中。


是否有一种“良好做法”的标准方法?

1 个答案:

答案 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;