dongfang 发表于 2024-12-20 09:30:40

关于冒泡例程咨询

<p>关于冒泡例程咨询</p>
<p>疑问</p>
<p>程序里加入#ifdef BUBBLE_SORT什么意思</p>
<p>我想引用这两个子程序,不加#ifdef BUBBLE_SORT,编译就报错,我没看出他什么作用,请高手指教</p>
<p>#ifdef BUBBLE_SORT//使用冒泡排序<br />
//========================================================================<br />
// 函数: void DataSwap(u16* data1, u16* data2)<br />
// 描述: 数据交换函数。<br />
// 参数: data1,data2 要交换的数据.<br />
// 返回: none.<br />
// 版本: VER1.0<br />
// 日期: 2021-9-27<br />
// 备注:<br />
//========================================================================<br />
void DataSwap(u16* data1, u16* data2)<br />
{<br />
u16 temp;<br />
temp = *data1;<br />
*data1 = *data2;<br />
*data2 = temp;<br />
}</p>
<p>//========================================================================<br />
// 函数: void BubbleSort(u16* pDataArry, u8 DataNum)<br />
// 描述: 冒泡排序函数。<br />
// 参数: pDataArry需要排序的数组,DataNum需要排序的数据个数.<br />
// 返回: none.<br />
// 版本: VER1.0<br />
// 日期: 2021-9-27<br />
// 备注:<br />
//========================================================================<br />
void BubbleSort(u16* pDataArry, u8 DataNum)<br />
{<br />
bit flag;<br />
u8 i,j;<br />
for(i=0;i&lt;DataNum-1;i++)<br />
{<br />
flag = 0;<br />
for(j=0;j&lt;DataNum-i-1;j++)<br />
{<br />
if(pDataArry &gt; pDataArry)<br />
{<br />
flag = 1;<br />
DataSwap(&amp;pDataArry, &amp;pDataArry);<br />
}<br />
}<br />
if(!flag)//上一轮比较中不存在数据交换,则退出排序<br />
{<br />
break;<br />
}<br />
}<br />
}<br />
//#endif</p>

DebugLab 发表于 2024-12-20 10:32:34

#ifdef和#endif要成对使用
报什么错

dongfang 发表于 2024-12-20 10:43:34

DebugLab 发表于 2024-12-20 10:32
#ifdef和#endif要成对使用
报什么错

linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_BUBBLESORT?MAIN
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA   
    SEGMENT: ?DT?_BUBBLESORT?MAIN
    LENGTH:0006H
Program Size: data=131.4 xdata=0 code=6402

DebugLab 发表于 2024-12-20 11:14:30

dongfang 发表于 2024-12-20 10:43
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_BUBBLE ...

data过大,大数组改xdata

bkeuqoaq 发表于 2024-12-20 11:19:19

#ifdef BUBBLE_SORT //使用冒泡排序
如果定义了BUBBLE_SORT 就使用下面的代码,没有定义就不编译这部分代码,减少代码量,想要使用就定义这个宏BUBBLE_SORT

比如
#define BUBBLE_SORT
#ifdef BUBBLE_SORT
...

dongfang 发表于 2024-12-22 15:38:40

DebugLab 发表于 2024-12-20 11:14
data过大,大数组改xdata
我用的STC8H1K28的RAM是256字节,这才用了131字节多点,难道编译器默认51系列单片机都是128,但加上#ifdef BUBBLE_SORT.........#endif,编译就报错

21cnsound 发表于 2024-12-22 17:08:04

dongfang 发表于 2024-12-22 15:38
我用的STC8H1K28的RAM是256字节,这才用了131字节多点,难道编译器默认51系列单片机都是128,但加上#ifdef ...变量不声明类型,XSMALL模式下默认是DATA,256Byte是iDATA,DATA是128byte

堆栈还要使用DATA区的RAM,一般大一点的数组都放进XDATA中。

dongfang 发表于 2024-12-25 14:26:40

21cnsound 发表于 2024-12-22 17:08
变量不声明类型,XSMALL模式下默认是DATA,256Byte是iDATA,DATA是128byte

堆栈还要使用DATA区的RAM,一般 ...

256Byte是iDATA,怎么又出来个iDATA是什么
页: [1]
查看完整版本: 关于冒泡例程咨询