1

我正在尝试使用一个变量并在函数使用它之后将其删除。Basicacly我doint str1 + str2,在函数中使用它然后释放内存。我以为我把一切都搞定了,但我的代码向我抛出了警告和错误:

  1. 错误:重新定义“命令”。
  2. 警告:函数“malloc”的隐式声明 [-Wimplicit-function-declaration]
  3. 警告:内置函数“malloc”的不兼容隐式声明 [默认启用]
  4. 警告:函数“免费”的隐式声明 [-Wimplicit-function-declaration]
  5. 警告:内置函数'free'的不兼容隐式声明[默认启用]

这是前面提到的代码:

// Step 1
char* commande = (char*) malloc(len1 + len2 + 1);
strcpy(commande, str1);
strcat(commande, str2);
function(commande);
free(commande);
// Step 2
char* commande = (char*) malloc(len3 + len4 + 1);
strcpy(commande, str3);
strcat(commande, str4);
function(commande);
free(commande);

我究竟做错了什么?

编辑:我更正了 len2 中的错字。

4

2 回答 2

1

声明如

char* commande = (char*) malloc(len3 + len4 + 1);

是一个变量声明。它说编译器:我希望命令成为一个字符的指针。您只能在函数中声明一次变量,因为重新声明变量没有任何意义。

关于不兼容的隐式定义的错误来自您没有告诉编译器有什么类型的事实malloc。为此,您必须包含一个包含所有必要声明的头文件。将以下行放在文件顶部:

#include <stdlib.h>
于 2012-12-15T12:23:31.317 回答
0

确保你已经包含并且不需要在第 2 行之后声明指针命令。

于 2012-12-15T12:24:18.993 回答