极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9405|回复: 7

库文件 大讨论 库文件导入已有的库文件

[复制链接]
发表于 2014-4-25 21:14:29 | 显示全部楼层 |阅读模式
问题1、有几处需要导入已有的库文件。
        A、头文件中需要吗?#include <IRremote.h> 我理解需要,因为如果使用arduino的库文件就需要#include "Arduino.h"。
b、源文件需要吗?#include <IRremote.h>  我理解需要也是看到#include "Arduino.h"。
c、ide程序中需要导入#include <IRremote.h>。我理解需要。


问题2、源文件中IRrecv irrecv(RECV_PIN);定义对象,需要在头文件的私有变量中声明吗?

问题3、源文件中decode_results results;中的results也是变量,需要在头文件的私有变量中声明吗,怎么声明?

这是编译时提示的问题,irrecv没有这个类。
KeyesIRremote::codeRead()':
E:\arduino-1.5.4\libraries\KeyesIRremote\KeyesIRremote.cpp:17: error: '((KeyesIRremote*)this)->KeyesIRremote::irrecv' does not have class type
E:\arduino-1.5.4\libraries\KeyesIRremote\KeyesIRremote.cpp:20: error: '((KeyesIRremote*)this)->KeyesIRremote::irrecv' does not have class type

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-4-25 22:17:03 | 显示全部楼层
你要直接用到某个header中申明的结构、函数等等才需要包含,间接的你应该交给模块,模块需要哪个header就包含哪个header。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 23:48:36 | 显示全部楼层
能说的再具体点吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 23:49:51 | 显示全部楼层
这属于哪方面的知识,我好查查相关材料
回复 支持 反对

使用道具 举报

发表于 2014-4-26 00:28:55 | 显示全部楼层
一般來說, 會在 庫的頭文件中 #include, 在庫的程式就只 #include 自己的頭文件.
在其他程序使用庫時, 是否需要, 就要看你的庫用到什麼庫了. 一般多加無壞, 反正重複不會有影響.

至於你的程式 error, 源於你在 private 中加入:

        IRrecv irrecv(int RECV_PIN);

會被看成你的 class 中會有一個 method, 而該 method 有 1 個 int 的 parameter, 並 return IRrecv 類.
你原意應該是想建立一個 名為 irrecv 的 IRrecv 的 object 吧.

之後你在 codeRead 中用到 irrecv, 由於系統把 irrecv 看成是這個 class 內的一個 method, 自然是沒有定義了.
回复 支持 反对

使用道具 举报

发表于 2014-4-26 01:18:41 | 显示全部楼层
補充多少少, 如果你是想在 runtime 創建 object (例如你的情況, RECV_PIN 由程式提供), 就不要直接定義一個 object, 而是要定義一個 pointer.
  1. IRrecv* irrecv;
复制代码
然後在 setup 中收到 RECV_PIN 後
  1. irrecv = new IRrecv(RECV_PIN);
复制代码
以後要使用 IRrec 的 method 時, 用 "->" 而不是用 ".", 例如:
  1. irrecv->decode(&results)
复制代码
由於我沒有 IRremote, 不能測試, 這都是 c++ 的語法, 應該沒大問題的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-27 11:08:24 | 显示全部楼层

求助super169

本帖最后由 ljg-net 于 2014-4-27 11:11 编辑
Super169 发表于 2014-4-26 00:28
一般來說, 會在 庫的頭文件中 #include, 在庫的程式就只 #include 自己的頭文件.
在其他程序使用庫時, 是否 ...


我修改了一下,还是不行,麻烦你你给我修改下头文件和源程序,我给你发个IRremote文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-4-27 18:09:03 | 显示全部楼层
你並沒有改好程式, 不用 compile 也應該看到問題.

之前不是已經說明了:

以後要使用 IRrec 的 method 時, 用 "->" 而不是用 "."


我只是給你一個例子, 你要自己把有關的地方改掉.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 03:17 , Processed in 0.043230 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表