关于冒泡例程咨询
<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<DataNum-1;i++)<br />
{<br />
flag = 0;<br />
for(j=0;j<DataNum-i-1;j++)<br />
{<br />
if(pDataArry > pDataArry)<br />
{<br />
flag = 1;<br />
DataSwap(&pDataArry, &pDataArry);<br />
}<br />
}<br />
if(!flag)//上一轮比较中不存在数据交换,则退出排序<br />
{<br />
break;<br />
}<br />
}<br />
}<br />
//#endif</p>
#ifdef和#endif要成对使用
报什么错 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 dongfang 发表于 2024-12-20 10:43
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_BUBBLE ...
data过大,大数组改xdata #ifdef BUBBLE_SORT //使用冒泡排序
如果定义了BUBBLE_SORT 就使用下面的代码,没有定义就不编译这部分代码,减少代码量,想要使用就定义这个宏BUBBLE_SORT
比如
#define BUBBLE_SORT
#ifdef BUBBLE_SORT
... DebugLab 发表于 2024-12-20 11:14
data过大,大数组改xdata
我用的STC8H1K28的RAM是256字节,这才用了131字节多点,难道编译器默认51系列单片机都是128,但加上#ifdef BUBBLE_SORT.........#endif,编译就报错 dongfang 发表于 2024-12-22 15:38
我用的STC8H1K28的RAM是256字节,这才用了131字节多点,难道编译器默认51系列单片机都是128,但加上#ifdef ...变量不声明类型,XSMALL模式下默认是DATA,256Byte是iDATA,DATA是128byte
堆栈还要使用DATA区的RAM,一般大一点的数组都放进XDATA中。
21cnsound 发表于 2024-12-22 17:08
变量不声明类型,XSMALL模式下默认是DATA,256Byte是iDATA,DATA是128byte
堆栈还要使用DATA区的RAM,一般 ...
256Byte是iDATA,怎么又出来个iDATA是什么
页:
[1]