我正在尝试从另一个文件中访问函数,以便在我的类定义中使用:
// math.cpp
int Sum(int a, int b){
return (a + b);
}
// my_class.cpp
#include <math.cpp>
#include <my_class.h>
int ComputeSomething() {
...
return ::Sum(num1, num2);
}
尽管我付出了最大的努力,但我无法让编译器吐出::Sum has not been declared
或Sum was not declared in this scope.
之外的任何内容
我正试图用C ++包围我的代码组织,任何帮助表示赞赏。
值得注意的是,我正在为Arduino编程。
答案 0 :(得分:1)
为了能够从用户定义的库访问函数,最好将该库分为.h(或.hpp)和.cpp文件。我知道你实际上已经这样做了,但为了找到解决方案,尝试了各种选项 - 其中包括.cpp文件。
尽管如此,为了确保事情按预期工作,函数和类的声明应该进入.h文件,受到类似
的保护。#ifndef MY_H_FILE
#define MY_H_FILE
/* ..Declarations.. */
#endif
然后包含.h文件(我假设它名为 my.h ),使用
#include "my.h" // path relative to build directory
或
#include <my.h> // path relative to any of the include paths
后者只有在编译器以前已知的包含路径上找到 my.h 时才有效(例如,使用-I
命令行指定的内容GCC中的选项)。如果给出的.h文件的路径相对于您正在构建的目录,则前者有效。
最后,不要使用可能与系统库混淆的文件名(例如“math.h”),特别是如果您使用<...>
语法,因为包含路径肯定会包含系统库头文件。
答案 1 :(得分:0)
您是否按照here给出的说明进行了操作?
自版本0017起,用户创建的库将进入您的子目录 默认草图目录。例如,在OSX上,新目录会 是〜/ Documents / Arduino / libraries /。在Windows上,它将是我的 文档\ Arduino的\库。要添加自己的库,请创建一个新库 库目录中的目录,包含库的名称。 该文件夹应包含带有代码和标头的C或C ++文件 带有函数和变量声明的文件。它会出现 在草图中|在Arduino IDE中导入库菜单。