返回值类型为unsigned long long的函数永远返回为0的问题解决

本文讲述了在PPC8313硬件平台的嵌入式Linux系统中,遇到一个返回值为unsigned long long的函数始终返回0的诡异问题。经过排查,发现是由于缺少头文件导致的编译警告,修正后问题得到解决。强调了头文件、编译警告和编码规范的重要性,并推荐使用静态代码检查工具辅助开发。
摘要由CSDN通过智能技术生成

    今天帮同事解决了一个很奇怪的问题,一个定义返回值为unsigned long long的函数在实际调用中竟然永远返回0,就算你在此函数内返回任意整数调用者获得的都是0.

    硬件平台为PPC8313,操作系统为嵌入式Linux,编译器为g++的交叉编译器,版本为4.2.2.

    环境比较复杂,但问题简化后总共涉及三个文件,liba.h定义一些函数接口和liba.cpp实现liba.h定义的函数接口,这两个文件在编译后生成一个名字为liba.a的静态库,main.cpp调用liba.a内的接口,最后和liba.a一起链接生成名为test的可执行文件。

    三个文件代码简化如下:

liba.h内容如下:

/* liba.h */
#pragma once
#ifdef __cplusplus
extern "C" 
{
#endif /* end of defined __cplusplus */

	unsigned long long GetSize();
	
#ifdef __cplusplus
}
#endif /* end of defined __cplusplus */
/* end of liba.h */

liba.cpp内容如下:

/* liba.cpp */
#include <stdio.h>
#include "liba.h"
using namespace std;
unsigned long long GetSize()
{
	unsigned l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值