将参数传递给参数

时间:2014-03-01 20:28:47

标签: c dispatch

我有以下代码:

typedef struct Folder{
 void (**vtable)();
 struct Set *ns;
}Folder;

Node *newFolder(char *n,struct Set *ns);

当我编译这个文件时,它给了我:

passing argument to parameter 'ns' here
Node *newFolder(char *n,struct Set *ns);

这是我的测试单位:

  void testFolderNrNodes(CuTest *tc) {
  Node_reset();
  Node* folder = newFolder("folder_to_test", SetNil());
  CuAssertIntEquals(tc, 1, nrNodes(folder));
}

这给了我这个错误:

incompatible integer to pointer conversion passing 'int' to parameter of type
'struct Set *' [-Wint-conversion]
Node* folder = newFolder("folder_to_test", SetNil());
                                           ^~~~~~~~

我看不出问题所在。它来自struct Set *ns吗?为什么我会使用"incompatible integer to pointer conversion passing 'int' to parameter of type 'struct Set *"收到此消息? 有人可以让我知道我做错了吗?

2 个答案:

答案 0 :(得分:0)

你的SetNil()函数要么返回一个整数,要么在使用之前没有被声明(在这种情况下编译器会假设它返回一个整数)。 newFolder()但期望其第二个参数为struct Set *

答案 1 :(得分:0)

从你的评论中可以看出,SetNil()确实正在返回一个int。如果您真的想避免警告,那么您可以将代码更改为

newFolder("folder_to_test", (struct Set *)SetNil())

但是,除非您知道SetNil返回的内容,否则这可能非常危险。真正的修复应该在函数SetNil()