当前位置:  技术问答>linux和unix

gnu c 的小问题

    来源: 互联网  发布时间:2017-05-10

    本文导语:  3个文件 ******************************************************************************** main.c #include  #include  int main(void) { t_fops ts; ts.add(1,2); return 0; } ************************************************************************************* fun.c #include ...

3个文件
********************************************************************************

main.c


#include 
#include 
int main(void)
{
t_fops ts;
ts.add(1,2);
return 0;
}

*************************************************************************************

fun.c


#include 
#include 
void fun_add(int a, int b)
{
int sum = a+ b;
printf("a+b = %d n", sum);
}


static t_fops fp = {
.add = fun_add,
};

**************************************************************************************************

fun.h


typedef struct fops{

void(*add)(int a, int b);
} t_fops;


*************************************************************************************

[root@arm 2]# make
gcc -g -Wall -O3 -march=i386 -I. -MMD -c -o fun.o fun.c
gcc -g -Wall -O3 -march=i386 -I. -MMD -c -o main.o main.c
main.c: In function ‘main’:
main.c:7: 警告:此函数中的 ‘ts.add’ 在使用前未初始化
gcc -o test fun.o main.o 


*****************************************************************
执行:
[root@arm 2]# ./test 
段错误


**************************************************************
请问,ts.add 要怎么初始化????(我不是已经在fun.c 把 add 函数初始化了吗??)要怎么改??


谢谢

|
你在func.c中初始化的是一个t_fops的静态变量fp,而在main函数里面用的是另一个t_fops变量ts,他们是两个变量,ts变量没有初始化。
楼上的修改可以解决你的问题,是正确的用法(推荐)。另一个解决方法是你使用fp变量,而不要再定义新的变量:

main.c:

#include 
#include 
int main(void)
{
fp.add(1,2);
return 0;
}


func.c:

#include 
#include 
void fun_add(int a, int b)
{
int sum = a+ b;
printf("a+b = %d n", sum);
}

t_fops fp = {
.add = fun_add,
};


func.h:

typedef struct fops
{   
void(*add)(int a, int b); 
} t_fops;

extern t_fops fp;

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Guangzhou GNU/Linux User,广州GNU/Linux用户组,欢迎加入
  • GNU ARM 工具链
  • GNU toolchain
  • GNU可移植线程库 nPth
  • GNU Automake
  • 可移植C++类库 GNU Common C++
  • 游戏 GNU Robbo
  • 怎样验证自己的make是不是GNU的make?
  • 软件无线电 GNU Radio
  • 小型的GNU环境 MSys
  • GNU/Hurd为何物,望指教!
  • 翻译GNU的文档侵犯版权吗?
  • GNU ld脚本 初学
  • GNU Hurd
  • GNU Make 标准库 GMSL
  • 休闲游戏 GNU Shogi
  • 单位转换测量 GNU Units
  • 任意精度数值计算器 GNU bc
  • 控制台文本编辑器 GNU Moe
  • GNU ed


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,