我有以下代码:
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 *"
收到此消息?
有人可以让我知道我做错了吗?
答案 0 :(得分:0)
你的SetNil()
函数要么返回一个整数,要么在使用之前没有被声明(在这种情况下编译器会假设它返回一个整数)。 newFolder()
但期望其第二个参数为struct Set *
。
答案 1 :(得分:0)
从你的评论中可以看出,SetNil()
确实正在返回一个int。如果您真的想避免警告,那么您可以将代码更改为
newFolder("folder_to_test", (struct Set *)SetNil())
但是,除非您知道SetNil返回的内容,否则这可能非常危险。真正的修复应该在函数SetNil()