【发布时间】:2012-09-27 14:48:51
【问题描述】:
我有 4 个文件:
main.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "main.h"
int main() {
struct Fun *fun = (struct Fun*)malloc(sizeof(struct Fun));
fun->a = 2;
fun->b = 12;
fun->Func = Plus();
int result = fun->Func(fun, 8);
printf("%d\n", result);
return 0; }
main.h
#ifndef MAN_H_
#define MAN_H_
struct Fun {
int a;
int b;
int (*Func)(struct Fun *x,int y);
};
header.c
#include "header.h"
int Plus(struct Fun *x, int y) {
return x->a * x->b + y; };
header.h
#ifndef HEADER_H_
#define HEADER_H_
#include "man.h"
#endif /* HEADER_H_ */
当我构建时,我收到一个警告:
../main.c:12:5: 警告:函数‘Plus’的隐式声明 [-Wimplicit-function-declaration] ../main.c:12:15: 警告:赋值使指针从整数不进行强制转换[默认启用]
如果我运行,它没有结果。
但是当我将所有代码放入 main.c 并将 fun->Func = Plus(); 编辑为 fun->Func = Plus; 时,它工作正常:没有警告,结果是 32。
【问题讨论】:
-
提示,不要投
malloc的返回值。
标签: c