使用Keil开发ARM编程问题,请编程高手指点一下:为啥用了一条#if(1)的预编译指令?1就表示条件为真

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Keil开发ARM编程问题,请编程高手指点一下:为啥用了一条#if(1)的预编译指令?1就表示条件为真相关的知识,希望对你有一定的参考价值。

肯定会执行下面的代码吧?难道还会出现异常情况?如果可能出现异常一般是什么原因引起的呢?求解答。

是这样的,一般来说,#if 0,#if 1多是用在调试的过程中。
在C语言中,我们开发过程中,如果让某一段代码不执行,我们用两种办法,一种是用“//"或者“/**/"屏蔽掉,另一种,就是用#if 0。。。。#endif方法来关闭,一般来说,老手都用后者,当调试完成后,会修改回#if(1),让代码回归在正常状态下。
所以,你这里的#if(1)应该是调试过的,之后又修改回来的结果。追问

谢谢你的回答,可以将你设置为满意答案,还有一个问题需要请教,在启动文件中有一些汇编语言,其中出现了“B .”一条语句(注意是B后面有一个点),这是什么意思呢?

追答

很抱歉,这个我就不知道了,最好你能把那条语句及它前后的语句都贴上来看一下,你单纯的这么说,我还真猜不着

追问

就是红框中的语句。

追答

哦,死循环的意思,相当于while(1),或者51单片机里的 LJMP $,那个 .表示当前地址。
http://blog.csdn.net/wavemcu/article/details/6424187

参考技术A B .
是ARM的汇编,原地跳转,也就是死循环。追问

如果是死循环的话怎么能够执行下面的语句呢?

追答

死循环自然就不需要执行后续的语句了,等待系统事件发生来切换至其它状态。

QT tcp 编程 【在线等】

我在arm9的linux 下写了服务器程序,float data[1]; write(tcpsocket, data, sizeof(data));
想在PC(win7)中的QT写个客户端接受网络传来的数据。看书上说QT有两种接受数据的方法,块和行的。请高手指点一下应该怎么写这个QT程序,QDataStream类的话,具体改怎么写.图片中是我写的程序,每次block 读入的数据,我in 到f里就成了0 ,不知道是什么问题,谢谢大家了。

参考技术A 你的字节长度有问题吧? sizeof(data)/sizeof(float)
如果你直接write的,你可以在收到readyRead信号后,直接处理 用readall 或循环读取。
如果用block的话,sokect收到readyRead信号后,创建一个sokect数据流 QDataStream in(sokect)
判断是否已经接收到了需要的数据块大小,如果已接收到了块大小,读取数据流。 in>>f;

以上是关于使用Keil开发ARM编程问题,请编程高手指点一下:为啥用了一条#if(1)的预编译指令?1就表示条件为真的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 高手请进

QT tcp 编程 【在线等】

keil arm汇编如何指定一个绝对地址的代码区?

keil51中怎么用C语言编程把处理得到的数据存到数据存储器中,掉电不会消失

三菱plc与电脑连接时,提示无法与plc通信,怎么回事啊?请高手指点以下

Keil5 STM32 C++开发 ARM V6编译器的使用教程