有没有一种方法可以检测是否正在使用Arduino,Stino或其他IDE /工具链?


8

我注意到Arduino IDE和Stino之间存在一些令人讨厌的差异(主要是围绕某些头文件)。这些可能是需要与一个或两个参与方跟进的错误,但是与此同时,我希望我的代码无需编辑即可与它们两个一起编译。这是因为我不想让任何用户都无法使用我的代码。

是否有任何可用的宏或类似内容(例如,无需修改工具链或IDE),可以使我检测出正在使用的宏或类似内容?

例如,在许多库中,都有以下代码段:

#if ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

但是,Stino和Arduino都对此进行了定义。


1
我在Stino工具链中闲逛了一会,并提交了一两个拉取请求。将类似的内容#define STINO_COMPILER添加到编译时定义中应该很容易。管理该回购协议的人非常愿意接受这样的明智的拉取请求,并且一旦它在主线回购协议中正确存在,就不需要任何最终用户进行更改。
康纳·沃尔夫2014年

谢谢,假名-是的,我认为这听起来不错。我认为我真的只需要对Stino的支持。我还没有看到Eclipse经常使用得足够关心。
Cyber​​gibbons 2014年

这不是真正的解决方案,但是您也可以添加两个版本的代码,或者以某种方式添加注释:取消注释以下行,并删除Stino的其他行。| @Fake在Arduino IDE中使用该代码时会出现问题吗?
匿名企鹅2014年

为了进一步说明Anonymous Penguin的评论,您可以为每个编译器定义一个磅。然后,该代码的默认版本会出现错误,除非用户注释一行以指定他们使用的编译器,否则该代码将无法运行。像这样的东西#if !defined(STINO_COMPILER) #error please uncomment one of the compiler lines #endif
portforwardpodcast

Answers:


1

正如Stino声称使用已经安装的Arduino IDE一样,这意味着您无法在编译时进行区分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.