希望对IAR库的操作比较熟的仁兄进来看看,谢谢!
那位仁兄对IAR的库操作比较熟呢?我想请教个问题,就是我在做库的时候,想把有些端口在实际使用中可以从新定义,这样能提高库的移植性,例如程序:
//-------------------------------
//库文件的内容:
#include "io.h"
void out (void)
{
outport ^= bit_0;
}
//--------------------------------
//io.h的内容:
#define bit_0 0x01
#define bit_1 0x02
#define outportP1OUT
void out (void);
在我实际使用的时候,我把out()函数生成后的文件添加新的工程中,也把io.h包含到新的工程中,再把头文件(io.h)的bit_0改成0x02,但是实际上还是按照原来库里的定义运行的,请问IAR支持这种做法吗?要想达到这种思想,应该怎么做呢,希望能得到知道的朋友指点指点,不胜感激! 所有的c编译器都不会支持你这个想法的.因为编译后的库就好比是一个常数了.里面的所有东西都不可以改变了.
头文件只是用来告诉你,在这个库里你可以用哪些资源.
你的这个想法只能用源码级的编译才可以. 可以用指针试试看. 首先谢谢两位仁兄的回答!一楼的仁兄把库的作用说得很明白,比喻很恰当!再说声谢谢!二楼的哥们也给我扩展了一下思路。谢谢两位!如果没有好的办法,就把函数经过传递的方式做,这样就会多出很多判断的代码,看实际使用要求了,谢谢!
那位有更好的办法,不防也说说看。 端口组用指针,断口位用变量理论上是可以的,我现在的库全部要求硬件定死,不允许改.既然做库就必须有一些条件必须定死. 对了,想要更改库里的内容可以试一下钩子函数.前段时间看uC/OS II里介绍过钩子函数.这个方法可以改变库的结构.
因为你生成的库只是将调用函数的地址编译进去了.在重要的函数中放入钩子函数就可以了. 我也需要解决这问题 这问题难啊,哎,有解决办法没
页:
[1]