Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将参数传递给参数_C_Dispatch - Fatal编程技术网

C 将参数传递给参数

C 将参数传递给参数,c,dispatch,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 testFolderNrNode

我有以下代码:

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());
                                           ^~~~~~~~
我看不出有什么问题。它是否来自
结构集*ns
?为什么我通过将“int”传递给“struct Set*”类型的参数而获得此消息?
有人能告诉我我做错了什么吗?

你的
SetNil()
函数要么返回一个整数,要么在使用之前没有声明过(在这种情况下,编译器将假定它返回一个整数)
newFolder()
但是,从您的注释中可以看出,
SetNil()
确实返回了一个int。如果确实希望避免警告,则可以将代码更改为

newFolder(“folder\u to\u test”,(struct Set*)SetNil())


然而,这可能非常危险,除非您知道SetNil返回什么。真正的修复应该在函数
SetNil()

什么是
struct Set
(和
节点
)?您确定在使用结构集时不是指结构文件夹?
SetNil()
问题似乎是您尚未声明函数,因此根据上下文,C编译器假定它是一个返回
int
的函数。请更新您的问题以包含
SetNil()
的定义。看起来SetNil()返回的是int,而不是指向结构集的指针。正如@leeduhem所提到的,请包含SetNil()的定义,这将有助于解决问题issue@Joe,我没有SetNil()的任何定义。测试单元来自另一个文件,我的工作是编写函数,它们应该通过测试。赋值与SetNil()无关,我认为它是自动声明的。下面是另一个给我带来警告的示例:警告:不兼容的整数到指针转换使用“int”[-Wint conversion]Set set1=SetNil()类型的表达式初始化“struct Set”@leeduhem请向上看。我想它返回了一个空集。我现在正在尝试编写代码。