请教“#pragma used+”是什么意思?
请问“#pragma used+”是什么意思?我查CodeVision的PDF都找不到。 有没有人能告诉我啊? 没人理我?! 是不是我问的问题太RZ啦? 有人知道吗? 没用过这个编译环境,估计是在C里面嵌入汇编的时候要使用的吧 .比如KEIL的#pragma asm汇编语言程序代码 #pragma endasm “请问“#pragma used+”是什么意思?我查CodeVision的PDF都找不到。 ”
我反而觉得你没有认真看PDF文档。
表示那个程序用的话就编译链接,否则就不链接进去。 那“#pragma used+”是怎么回事?
CVAVR的中文资料中有这样一段:
// 关闭编译时的warning
#pragma used+
// 库函数原型
int sum(int a, int b);
int mul(int a, int b);
#pragma used-
我想应当是关闭编译警告用的. 刘汧老大是不是得给我们介绍一下CVAVR的编译控制符呀! 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'。其实你可以写个函数,但不要使用它,编译是就会出现上述警告信息。 +表示起用此项功能,-表示关闭此项功能 是不是不要这两句(#pragma used+和#pragma used-)也不会影响程序的完整性,而只是在编译时有警告呢? 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=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_ 学到了。 做个标记~明白了~ Thanks 马老师在m16的书里UART部分提到过 学到了 o 记上 明了顶一个 学习了。 要得,好东西。 学习了 记下 ji 有点明白 {:biggrin:} 学习了!!!!!!! 其实这样的问题,如果没有深究,很多人都不会
学习了! 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=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_
学到了,谢谢~~~ 顶一下!!!
页:
[1]