jianhong_wu 发表于 2014-11-17 13:05:36

合泰8位单片机的编译器选V2好还是选V3好?__attribute__是实现一个什么功能?已解答。

Ack-深圳:
#define DEFINE_SFR(sfr_type, sfr, addr) static volatile sfr_type sfr __attribute__ ((at(addr)))
这是合泰单片机中的库文件的一个宏定义代码。这是官方提供的库文件,不需要我们修改,只要用就可以。
这个__attribute__是实现一个什么功能?我只是猜测他好像是一个跟地址有关的。

Inc-东莞:
不要猜。你这个指令用在V3版本。这个就是一个入口函数。在中断的入口宏中会用到,

Ack-深圳:
哦,我就是用V3的。它实现一个什么功能,引导程序吗?

Inc-东莞:
入口嘛,例如你要定义定时器中断的时候,你需要转移到相应的地址执行中断程序,这时候你可以利用他来指引到中断程序的入口地址。

任军-深圳:
__attribute__是编译器指令,后跟一些命令,设置符号属性。比如at用于设置符号地址。

Inc-东莞:
你打开你编译器的“帮助”菜单的下拉列表会有个V3的用户说明书,打开说明书在48页会有相应的讲解。

Ack-深圳:
就像这样来使用。

Inc-东莞:
不过,我一直在用V2,因为有些芯片是不支持V3的,而V2却兼容,所以我还是用V2好了。V3也就优化程度比V2好一丁点而已,在爆RAM的情况下可以考虑用V3。

Ack-深圳:
原来这样啊。我建工程的时候,选择了V3,所以就看到了这个。

Inc-东莞:
有的芯片不支持,就不会显示V3。

Ack-深圳:
感觉 跟V2的一些定义不一样。有的支持,就会显示。

Inc-东莞:
恩恩,不同的。大同小异吧这样说。

fyt57889681-东莞:
V3的bug一直在修正,V2V3语法有很多差异。

Ack-深圳:
好像显得更加好阅读了。

Inc-东莞:
用V2就好了。不熟悉,稳一点好。没必要为了那一丁点的优化程度而冒险惹来一堆的BUG。而且,如果你不是牛人,基本很难爆ROM和爆RAM的。

Ack-深圳:
也是,还是该用V2。

Inc-东莞:
看自己合适,我的观点只做参考。目测我认识那个FAE从来没有用过V3。

Ack-深圳:
恩。我都没有用过,第一次使用。当然是使用最稳定的一个了。资料也是要最全的一个版本了。我只用8位机而已,都不用合泰的32位机。好像我找的一些C语言范例都是用V2的。官方都还没有用V3出过范例啊。


karo 发表于 2014-11-17 13:11:20

我一直用V2

karo 发表于 2014-11-17 13:12:08

不熟悉,最好不用v3 ,没必要
页: [1]
查看完整版本: 合泰8位单片机的编译器选V2好还是选V3好?__attribute__是实现一个什么功能?已解答。