gcc编译器各种warning 解决方式

warning: implicit declaration of function 'xxx'(函数的隐式说明)

   今天在移植gnu-ucos的时候出现一个问题----warning: implicit declaration of function 'OSCtxSw' 

      经过在网上搜索发现主要有两种情况会产生这种问题:

1)没有把函数所在的c文件生成.o 目标文件。

2)在函数所在的c文件中定义了,但是没有在与之相关的.h 文件中声明。

    这里是第二种情况,但又不全是。通过分析查看发现函数OSCtxSw是在 os_cpu_s.s里面实现的。在这个文件里面还有其它靠汇编实现的函数。在这里需要加一个头文件对这个函数的声明。

    在include 目录下增加一个文件 os_cpu_s.h ,里面加入汇编语言文件实现的函数声明

void  OSCtxSw(void);
再次编译没有 warning。 通过



suggest parentheses around arithmetic in operand of '|'

    用gcc编译程序遇到如下问题:

warning: suggest parentheses around arithmetic in operand of '|'
//GPG4 is setted as LCD_PWREN
    rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable
提示建议用括号扩住 '|' 运算,修改为如下形式即可:

//GPG4 is setted as LCD_PWREN
    rGPGUP= (rGPGUP&(~(1<<4))) | (1<<4); // Pull-up disable



warning: control reaches end of non-void function

出现这个警告说明 某个函数没有return 一个数值。 而这个函数的返回是非void的.比如说

int add()
{
	///aaa
	///bbb
}
函数返回一个int类型,在函数体内部却没有返回。



warning: function declaration isn't a prototype

    如果一个函数没有参数,int hello_init(void)  括号里面没有加void就会出现此警告。 注意这个void 无论在函数声明还是定义的时候都要加上!












  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值