相关疑难解决方法(0)

包括.cpp文件

我在这里读过你必须包含.h文件而不是.cpp文件,因为否则会出错.所以举个例子

main.cpp中

#include <iostream>
#include "foop.h"

int main(int argc, char *argv[])
{
int x=42;
std::cout << x <<std::endl;
std::cout << foo(x) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

foop.h

#ifndef FOOP_H
#define FOOP_H
int foo(int a);
#endif
Run Code Online (Sandbox Code Playgroud)

foop.cpp

int foo(int a){
    return ++a;
}
Run Code Online (Sandbox Code Playgroud)

作品,但如果我更换#include "foop.h"#include "foop.cpp"我得到一个错误(使用开发C++ 4.9.9.2,Windows中):

multiple definition of foo(int)
first defined here
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

c++

49
推荐指数
5
解决办法
12万
查看次数

将所有库保存在Arduino sketch目录中

我知道你应该在arduino安装目录的"libraries"文件夹下放置任何外部库,但我有一个项目,它使用我为项目创建的几个库,主要是为了保持所有代码自包含和出来主要的pde文件.但是,我试图将库放在与主PDE文件相同的目录中,以便我可以更容易地将所有内容保存在subversion中(我在多台计算机上处​​理这个)并且我不想继续返回并分别同步库.此外,只是为了能够轻松拉链草图文件夹,并知道它包含它需要的一切.

我已经尝试将标题文件添加到草图中作为新选项卡,但这似乎根本不起作用...甚至不关心它们是否应该在arduino IDE中.

我也尝试将库添加到子目录中的sketch目录(我更喜欢),然后链接到它们:

#include "mylib/mylib.h"
Run Code Online (Sandbox Code Playgroud)

#include <mylib/mylib.h>
Run Code Online (Sandbox Code Playgroud)

但这两个都导致文件未找到错误.

这可能吗?如果是这样,我如何将它们包含在主文件中进行构建?最好在他们自己的子目录中.

c c++ header arduino

43
推荐指数
4
解决办法
4万
查看次数

C++标题和CPP包括

快速的问题.

我试图让C++固定下来,今天我花了几个小时的双定义链接器错误("这已经定义了!")我终于意识到这是因为我有这样的布局:

现在我通过在main.cpp中包含Dog.h而不是Dog.cpp来清除它.

通过包含.h文件,具有相同前缀的.cpp文件是否可以用程序编译?

当程序只包含.h并且没有任何对Dog.cpp的引用时,我感到震惊.我花了很多年的谷歌搜索,但没有答案真的帮助我理解发生了什么.

编辑:我忘了添加我在.h中的原型,并在.cpp中为类定义了函数,这就是给出了"已定义"错误的原因.

c++ program-entry-point header

3
推荐指数
1
解决办法
1509
查看次数

标签 统计

c++ ×3

header ×2

arduino ×1

c ×1

program-entry-point ×1