数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1342|回复: 14

[Arduino] 这种预编译指令,怎么写呢?

[复制链接]
发表于 2020-4-17 13:31:56 | 显示全部楼层 |阅读模式
#ifdef defined(ESP8266)

#endif

#ifdef defined(ESP32)

#endif

这样写似乎不对,两个条件都不执行,应该是定义不对,不知怎么定义和哪里能查到这个定义呢




就是在编译时,区分8266与esp32,来选择不同的库
没写过这个:loveliness:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
发表于 2020-4-17 13:35:43 | 显示全部楼层
如果在10年前或许能告诉你,现在都忘没了

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-4-17 13:36:14 | 显示全部楼层
#defined ESP8266
#ifdef ESP8266
// 这里有效
#endif

#ifdef ESP32
// 这里无效
#endif

打赏

参与人数 1家元 +20 收起 理由
人艰不拆了 + 20

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 13:41:54 | 显示全部楼层
wenxueroom 发表于 2020-4-17 13:36
#defined ESP8266
#ifdef ESP8266
// 这里有效

哈哈,多谢,哪里有这个定义的文件呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 13:43:56 | 显示全部楼层
nb267213667 发表于 2020-4-17 13:35
如果在10年前或许能告诉你,现在都忘没了

哈哈,改行了吧:loveliness:
回复 支持 反对

使用道具 举报

发表于 2020-4-17 13:51:34 来自手机浏览器 | 显示全部楼层
这个是编译器的代码,应该看编译器手册吧

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-4-17 14:14:18 | 显示全部楼层
人艰不拆了 发表于 2020-4-17 13:41
哈哈,多谢,哪里有这个定义的文件呢

#define ESP8266
这个不一定必须存在于某个.h中的,编译参数中也可以指定的。
一般Arduino中如果你已经使用了Esp8266的Platform的话,编译器自动已经定义好了。

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 14:17:50 | 显示全部楼层
jjbboox 发表于 2020-4-17 14:14
#define ESP8266
这个不一定必须存在于某个.h中的,编译参数中也可以指定的。
一般Arduino中如果你已经使 ...

能查一下都是怎么定义的就好了,嘿嘿:titter:
回复 支持 反对

使用道具 举报

发表于 2020-4-17 14:51:48 | 显示全部楼层
我一般这么用
#define A  1

#if  A

#else

#endif

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 14:56:27 | 显示全部楼层
springvirus 发表于 2020-4-17 14:51
我一般这么用
#define A  1

那不还得改A吗,这个是ide确定的开发版类型啊:loveliness:
回复 支持 反对

使用道具 举报

发表于 2020-4-17 15:43:38 | 显示全部楼层
人艰不拆了 发表于 2020-4-17 14:17
能查一下都是怎么定义的就好了,嘿嘿

你不需要管的,你选了esp8266的板子,在环境设定文件中就已经定义好了。
编译的时候自动添加到编译命令中的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 15:47:49 | 显示全部楼层
jjbboox 发表于 2020-4-17 15:43
你不需要管的,你选了esp8266的板子,在环境设定文件中就已经定义好了。
编译的时候自动添加到编译命令中 ...

是不用管,但是我程序里需要判断啊,不同板子需要加载的库就不一样了,很多语句也不同,关键我不知道,各种板子的标志符怎么定义的,虽然偶尔也能看到,但是看完就忘了:titter:
回复 支持 反对

使用道具 举报

发表于 2020-4-17 15:51:22 | 显示全部楼层
#define UPD16311                        // Define this to use NEC uPD16311 or PT6311 VFD driver

#ifdef UPD16311     // 或者:#if defined(UPD16311)
//...
#else
//...
#endif


// 下面这类有具体值的,通常是宏,在语句中引用,方便程序修改、调试
#define HIGH_LEVEL        1
#define LOW_LEVEL        0
#define EEPROM_INIT_C                0xFF
// 引用宏:
cData = EEPROM_INIT_C;        

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-4-17 16:36:08 | 显示全部楼层
#define ESP8266 1

#if ESP8266==1
代码段1
#else
代码段2
#endif

这样就可以了,条件编译。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 16:39:23 | 显示全部楼层
哈哈,多谢大家,凑凑合合的已经写好了:titter:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-9-8 00:00 , Processed in 0.358800 second(s), 20 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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