C中struct的函数实现,只能用函数指针成员。

C结构体内不能有函数的代码,但可以有函数的指针。

C/C code

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

#include <stdio.h>

struct test

{

void fun()

{

printf("hello,world\n");

}

};

int main()

{

struct test _t;

_t.fun();

return 0;

}

上面的代码保存为.c, 在VC 6.0, Dev Cpp 里都通不过。
函数指针方式实现,而不要直接定义函数 ...
当然struct里能放函数指针的。比如这样:

C/C code

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

#include <stdio.h>

void fun()

{

printf("hello,world\n");

}

struct test

{

void (*Fun)();

};

int main()

{

struct test _t;

_t.Fun = fun;
 
    (*_t.Fun)();

return 0;

}

C结构体内不能有函数的代码,但可以有函数的指针
网友回复:纯C中的struct没有成员函数,但可以有函数指针。
Object-oriented programming with ANSI-C是用函数指针来模拟成员函数的。

参考:http://blog.sina.com.cn/s/blog_502d82e10100fgl1.html

C中struct的函数的实现相关推荐

  1. python unpack_python中struct.pack()函数和struct.unpack()函数

    python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~.一般输入的渠道来源于文件或者网络的二 ...

  2. 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu

    6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *c ...

  3. C#中struct和class的使用区别是什么?

    class是引用类型,struct是值类型 引用类型在堆上,值类型是内联的. 值类型有全部的值的内容,而引用类型只有一个地址. 值类型总是有一个值,而引用类型指针可以为空. 为了优化减少体积 需要传递 ...

  4. 【整理】Linux驱动中,probe函数何时被调用

    声明:以下主要内容参考自: 关于struct device_driver结构中的probe探测函数的调用 http://blog.chinaunix.net/u2/71164/showart.php? ...

  5. Linux驱动中,probe函数何时被调用

    最近看到linux的设备驱动模型,关于Kobject.Kset等还不是很清淅.看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时 ...

  6. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  7. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )

    文章目录 一.准备 mmap 函数的参数 二.mmap 函数远程调用 一.准备 mmap 函数的参数 上一篇博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 远程调 ...

  8. 关于readdir返回值中struct dirent.d_type的取值有关问题(转)

    关于readdir返回值中struct dirent.d_type的取值问题 原网页链接 http://www.gnu.org/software/libc/manual/html_node/Direc ...

  9. 分类器是如何做检测的?(1)——CascadeClassifier中的detectMultiScale函数解读

    在进入detectMultiScal函数之前,首先需要对CascadeClassifier做初始化. 1.     初始化--read函数 CascadeClassifier的初始化很简单: cv:: ...

最新文章

  1. 收集常用的正则表达式
  2. 查看Aix系统配置命令
  3. python如何获取多个excel单元格的值
  4. 2013第51周二eclipse启动优化
  5. loginButton.setOnClickListener(this);这里为什么要用this呢?
  6. 项目:飞凌单片机boa服务器遇到问题总结
  7. AI 开发者不容错过的 20 个机器学习和数据科学网站
  8. 《『若水新闻』客户端开发教程》——16.添加广告
  9. 常见面试算法:朴素贝叶斯
  10. 大批量安装系统的解决方案(集锦)
  11. Phoca Gallery Images 去除 logo
  12. python手册中文版-Python中文文档
  13. Spring中拦截器和过滤器的使用
  14. 计算机辅助求解如何做,计算机辅助求解一元高次方程.pdf
  15. ensp vlan 划分
  16. echarts中如何设置geo3D地图背景图片,以及geo3D中如何使用effectScatter属性
  17. 密码学应用(二)访问控制
  18. Mongodb std::exception::what(): basic_filebuf::underflow error reading the file: iostream error
  19. 现代编程语言(3):zig
  20. 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...

热门文章

  1. (解决)org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题的办法
  2. [附源码]Python计算机毕业设计鞍山丘比特房屋租赁管理系统
  3. shellcode加载器--从入门到放弃
  4. 韩顺平Linux教程学习笔记
  5. STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收(一)
  6. Excel分组行转列(Power Query透视列,一维表转二维表)
  7. python账号怎么注销_登录后如何注销
  8. python爬虫爬取网易云热歌榜top200
  9. 395计算机毕业设计
  10. GNU Trove trove4j