Chinaunix首页 | 论坛 | 博客
  • 博客访问: 55673
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2018-08-26 01:30
文章分类

全部博文(51)

文章存档

2020年(2)

2018年(49)

我的朋友

分类: C/C++

2018-08-29 19:36:36

 网上有一段程序,被数人转载。

    code:



点击(此处)折叠或打开

  1. int inc(int a) {
  2.     return (++a);
  3. }

  4. int muti(int *a, int *b, int *c) {
  5.     return (*c = (*a) * (*b));
  6. }

  7. typedef int(FUNC1) (int in);
  8. typedef int(FUNC2) (int *, int *, int *);

  9. void show (FUNC2 fun, int arg1, int *arg2) {
  10.     INCp = &inc;
  11.     int temp = p(arg1);
  12.     fun(&temp, &arg1, arg2);
  13.     printf("%d/n", *arg2);
  14. }

  15. int main() {
  16.     int a = 0;
  17.     show(muti, 10, &a);
  18.     return 0;
  19. }

  本人在VC6以及VC8中均编译不通过。

   错误均在“INCp = &inc;”行。

   看到本段行代码,为宏替代函数。所以改造此行代码。

   FUNC1 *p = &inc;


点击(此处)折叠或打开

  1. // #include "stdafx.h" // VC
  2. #include <stdio.h>

  3. int inc(int a) {
  4.     return (++a);
  5. }

  6. int muti(int *a, int *b, int *c) {
  7.     return (*c = (*a) * (*b));
  8. }

  9. typedef int(FUNC1) (int in);
  10. typedef int(FUNC2) (int *, int *, int *);

  11. void show (FUNC2 fun, int arg1, int *arg2) {
  12.     //INCp = &inc;
  13.     FUNC1 *p = &inc;
  14.     int temp = p(arg1);
  15.     fun(&temp, &arg1, arg2);
  16.     printf("%d\n", *arg2);
  17. }

  18. int main()
  19. {
  20.     int a = 0;
  21.     show(muti, 10, &a);
  22.     return 0;
  23. }

运行结果:



阅读(438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~