搜索
bottom↓
回复: 30

请教“#pragma used+”是什么意思?

[复制链接]

出0入0汤圆

发表于 2005-12-20 20:30:35 | 显示全部楼层 |阅读模式
请问“#pragma used+”是什么意思?我查CodeVision的PDF都找不到。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2005-12-21 19:33:58 | 显示全部楼层
有没有人能告诉我啊?

出0入0汤圆

 楼主| 发表于 2005-12-22 18:44:02 | 显示全部楼层
没人理我?!

出0入0汤圆

 楼主| 发表于 2005-12-28 21:35:35 | 显示全部楼层
是不是我问的问题太RZ啦?

出0入0汤圆

发表于 2006-4-14 16:56:42 | 显示全部楼层
有人知道吗?

出0入0汤圆

发表于 2006-4-14 20:24:10 | 显示全部楼层
没用过这个编译环境,估计是在C里面嵌入汇编的时候要使用的吧 .比如KEIL的#pragma asm

汇编语言程序代码 #pragma endasm

出0入0汤圆

发表于 2006-4-14 21:57:03 | 显示全部楼层
“请问“#pragma used+”是什么意思?我查CodeVision的PDF都找不到。 ”

我反而觉得你没有认真看PDF文档。

表示那个程序用的话就编译链接,否则就不链接进去。

出0入0汤圆

发表于 2006-4-15 20:34:53 | 显示全部楼层
那“#pragma used+”是怎么回事?



CVAVR的中文资料中有这样一段:

// 关闭编译时的warning

#pragma used+

// 库函数原型

int sum(int a, int b);

int mul(int a, int b);

#pragma used-



我想应当是关闭编译警告用的.

出0入0汤圆

发表于 2006-4-15 20:39:32 | 显示全部楼层
刘汧老大是不是得给我们介绍一下CVAVR的编译控制符呀!

出0入0汤圆

发表于 2006-10-11 22:01:35 | 显示全部楼层
The #pragma directive will prevent the compiler from generating a warning that the function was declared, but not used in the program.

加入 #pragma used+目的是防止编译器出现一个警告提示,说已经申明/定义了一个函数,但没有在本程序中使用。警告信息如下:unreferenced funcetin 'function_name'。其实你可以写个函数,但不要使用它,编译是就会出现上述警告信息。

出0入0汤圆

发表于 2006-10-21 20:58:04 | 显示全部楼层
+表示起用此项功能,-表示关闭此项功能

出0入0汤圆

发表于 2008-5-16 21:33:46 | 显示全部楼层
是不是不要这两句(#pragma used+和#pragma used-)也不会影响程序的完整性,而只是在编译时有警告呢?

出0入0汤圆

发表于 2008-5-17 00:48:54 | 显示全部楼层
CVAVR本身提供了一些函数,如putchar().该函数是采用轮询方式,从USART发送一个字符.

如果你想编写自己的,例如,采用中断方式从USART发送一个字符,但函数名仍然为putchar(),顶掉原系统的putchar()函数是,使用#pragma used+ .使用CVAVR自动生成USART函数时,就会出现这样的使用:

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
    while (tx_counter == TX_BUFFER_SIZE);
    #asm("cli")
    if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
    {
       tx_buffer[tx_wr_index]=c;
       if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
       ++tx_counter;
     }
    else
       UDR=c;
    #asm("sei")
}
#pragma used-
#endif

此处的#pragma used+表示,使用#pragma used+/#pragma used-之间的代码,生成putchar()函数,代替原系统的putchar()函数.

如果你仍旧希望使用原系统的putchar()函数(调试阶段),那么就在最前面加上一句:
#defien _DEBUG_TERMINAL_IO_

出0入0汤圆

发表于 2008-9-14 17:57:51 | 显示全部楼层
学到了。

出0入0汤圆

发表于 2009-8-31 14:46:35 | 显示全部楼层
做个标记~明白了~

出0入0汤圆

发表于 2009-10-11 00:17:07 | 显示全部楼层
Thanks

出0入0汤圆

发表于 2009-10-11 01:10:32 | 显示全部楼层
马老师在m16的书里UART部分提到过

出0入0汤圆

发表于 2009-10-11 08:12:19 | 显示全部楼层
学到了

出0入0汤圆

发表于 2009-10-11 21:35:00 | 显示全部楼层
o

出0入0汤圆

发表于 2009-10-11 21:40:47 | 显示全部楼层
记上

出0入0汤圆

发表于 2009-12-9 11:33:36 | 显示全部楼层
明了  顶一个

出0入0汤圆

发表于 2009-12-9 14:45:43 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2009-12-9 14:55:33 | 显示全部楼层
要得,好东西。

出0入0汤圆

发表于 2010-4-20 15:38:37 | 显示全部楼层
学习了 记下

出0入0汤圆

发表于 2010-5-5 10:09:20 | 显示全部楼层
ji
头像被屏蔽

出0入0汤圆

发表于 2011-12-13 23:52:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-5-13 17:12:46 | 显示全部楼层
有点明白     

出0入0汤圆

发表于 2012-5-13 17:44:09 来自手机 | 显示全部楼层
学习了!!!!!!!

出0入0汤圆

发表于 2013-1-14 17:43:01 | 显示全部楼层
其实这样的问题,如果没有深究,很多人都不会
学习了!

出0入0汤圆

发表于 2013-2-2 13:48:13 | 显示全部楼层
10L:
The #pragma directive will prevent the compiler from generating a warning that the function was declared, but not used in the program.

加入 #pragma used+目的是防止编译器出现一个警告提示,说已经申明/定义了一个函数,但没有在本程序中使用。警告信息如下:unreferenced funcetin 'function_name'。其实你可以写个函数,但不要使用它,编译是就会出现上述警告信息。

13L:
CVAVR本身提供了一些函数,如putchar().该函数是采用轮询方式,从USART发送一个字符.

如果你想编写自己的,例如,采用中断方式从USART发送一个字符,但函数名仍然为putchar(),顶掉原系统的putchar()函数是,使用#pragma used+ .使用CVAVR自动生成USART函数时,就会出现这样的使用:

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
    while (tx_counter == TX_BUFFER_SIZE);
    #asm("cli")
    if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
    {
       tx_buffer[tx_wr_index]=c;
       if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
       ++tx_counter;
     }
    else
       UDR=c;
    #asm("sei")
}
#pragma used-
#endif

此处的#pragma used+表示,使用#pragma used+/#pragma used-之间的代码,生成putchar()函数,代替原系统的putchar()函数.

如果你仍旧希望使用原系统的putchar()函数(调试阶段),那么就在最前面加上一句:
#defien _DEBUG_TERMINAL_IO_

学到了,谢谢~~~

出0入0汤圆

发表于 2013-2-23 08:32:48 来自手机 | 显示全部楼层
顶一下!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表