如果我编译下面的代码,我会收到这样的警告:
警告:内置函数memset的不兼容隐式声明[默认启用]
void transform(int **a, int m, int n)
{
int *row = malloc(m*sizeof(int));
int *col = malloc(n*sizeof(int));
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
[...]
答案 0 :(得分:7)
如有疑问,请查看手册页:
$ man memset
MEMSET(3) BSD Library Functions Manual MEMSET(3)
NAME
memset -- fill a byte string with a byte value
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h>
^^^^^^^^^^^^^^^^^^^
这告诉您需要#include <string.h>
才能让编译器查看memset
的函数原型。
另请注意,您的代码中存在错误 - 您需要更改:
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
为:
memset(row, 0, m * sizeof(*m));
memset(col, 0, n * sizeof(*n));