我正在尝试在Ubuntu 9.10(gcc 4.4.1)中编译我的C程序。
我收到此错误:
Rect.cpp:344: error: ‘memset’ was not declared in this scope
但问题是我已经包含在我的cpp文件中了:
#include <stdio.h>
#include <stdlib.h>
同样的程序在Ubuntu 8.04(gcc 4.2.4)下编译得很好。
请告诉我我错过了什么。
答案 0 :(得分:157)
您应该包含<string.h>
(或其C ++等效版,<cstring>
)。
答案 1 :(得分:124)
如果你遇到这样的问题,只需转到有问题的man page for the function,它就会告诉你缺少什么标题,例如
$ 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>
void *
memset(void *b, int c, size_t len);
请注意,对于C ++,通常最好使用适当的等效C ++标头<cstring>
/ <cstdio>
/ <cstdlib>
/ etc,而不是C <string.h>
/ {{1 }} / <stdio.h>
/等