2 superbanma superbanma 于 2017.01.09 17:24 提问

qt5中C++宏的奇怪问题 5C

为了不同的条件做了一组宏,定义很简单
#ifdef RASPI
#define MOTOR 1
#define MAGSWITCH 4...
一直没什么问题,后来加了条件变成:
#ifdef RASPI
#define MOTOR 1
#define MAGSWITCH 4
#endif

#ifdef NANPI
#define MOTOR 1
#define MAGSWITCH 4
#endif

就出问题了,在cpp中一直报错:
MOTOR was not declared in this scope
pinMode(MOTOR, 1);
除非改成pinMode(1,1)。
后来,即使把NANPI的定义都注释掉了,依然报错!!!
疯掉了,请大师指导!

1个回答

shen_wei
shen_wei   Ds   Rxr 2017.01.10 16:18

#ifdef NANPI

#ifdef RASPI

这两个条件,关键是当前条件下运行哪个宏定义???

shen_wei
shen_wei 注释掉之后,重新编译整个工程。。。
一年多之前 回复
superbanma
superbanma 在global.h中,定义了#define NANPI 和 #define RASPI,运行时注释掉其中一种
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言宏定义的几个坑和特殊用法
总结一下C语言中宏的一些特殊用法和几个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档。 宏基础 宏仅仅是在C预处理阶段的一种文本替换工具,编译完之后对二进制代码不可见。基本用法如下: 1. 标示符别名 #define BUFFER_SIZE 1024 预处理阶段,foo = (char *) m
Java - 计蒜客 - 奇怪的国家
有一个奇怪的国家,里面的国民对于事情的态度永远只有两面。当两个人遇到一起讨论一个事情的时候——两个持赞同观点的人遇到一起后会对这个事情都继续赞同;一个持赞同观点的人遇到一个持不赞同观点的人的时候,两人都会不再继续赞同;两个持不赞同观点的人遇到一起讨论后反而会对这个事情开始赞同。 输入包括两行,每行包括N个数字(1≤N≤50),分别表示两个人对于N个事情对应的看法——0表示不赞同、1表示赞同。
C++宏定义需要注意的细节
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但如果我们不需要到一些细节,很容易因为这个简单的宏定义引发难以预料的问题 宏的定义 (1)简单的宏定义: #define 宏名>  字符串> 例: #define PI 3.1415926 (2) 带参数的宏定义
Qt5:用宏定义区分不同系统下的代码实现
示例#if defined(Q_OS_WIN32) qDebug()<<"Q_OS_WIN32"; #else qDebug()<<"Q_OS_other"; #endifqt定义的各个系统的宏定义Q_OS_AIX Defined on AIX. Q_OS_ANDROID Defined on Android. Q_OS_BSD4 Defined on An
Qt5的插件机制(6)--开发Qt插件时几个重要的宏
如何开发Qt插件,可以在Qt Assistant 中搜索"Qt Plugins"或"How to Create Qt Plugins",看看那篇manual中的介绍。 其中涉及到了几个宏 Q_DECLARE_INTERFACE( ClassName, Identifier) This macro associates the given Identifier (a string li
2014 蓝桥杯 预赛 c/c++ 本科B组 第六题:奇怪的分式(11')
第六题:奇怪的分式(11')     上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:     1/4 乘以 8/5      小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)     老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!     对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?  
qt5 语法细节记录
1.void xxClass::fun() const { const 修饰的函数类成员变量是不能在函数中改变的。 }
C语言scanf函数的返回值问题
不经意中发现scanf()的返回值问题,自己试验和了解了一下,一些所知与各位分享;void main() { int a;int b;int c;printf(&quot;请输入三个整数:&quot;);int x=scanf(&quot;%d%d%d&quot;,&amp;amp;a,&amp;amp;b,&amp;amp;c);printf(&quot;%d/n%d/n&quot;,a,x);}1.scanf()函数有返回值且为int型。2.scanf()函数返回的值为:正确...
C/C++ 宏定义中#、##、#@的区别
#表示:对应变量字符串化   ##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符 连接符#@:它将单字符标记符变换为单字符,即加单引号。例如: #define B(x) #@x  则B(a)即'a',B(1)即'1',但B(abc)却不甚有效。 #include #define trace(x, format) printf(#x " = %"
ACM气球膨胀问题C++实现
1.问题描述:给定一个矩形,在该矩形中有3个固定的点,以这3个点为中心的气球先后膨胀:膨胀时触碰到矩形的边或其他气球时则停止膨胀。编写程序求以何种顺序膨胀气球时,才能使气球的横切面面积之和为最大。   解: (1)以矩形左下角为原点,建立直角坐标系,程序输入的参数为:三个固定点的坐标,矩形的长和宽,输出膨胀顺序; (2)程序对参数的初步处理是算得三点相互之间的距离以及三点分别与矩形的最近距