我一直在研究Big C++中的一些程序,在复制了append.cpp之后,Eclipse在第8行告诉我'strlen' was not declared in this scope
。我在网上看了一眼,我想到了是因为我必须包含<cstring>
库,但这并没有解决它。怎么了?
append.cpp:
#include <iostream>
using namespace std;
void append(char s[], int s_maxlength, const char t[])
{
int i = strlen(s); // error occurs here
int j = 0;
while(t[j] != '\0' && i < s_maxlength)
{
s[i] = t[j];
i++;
j++;
}
//Add zero terminator
s[i] = '\0';
}
int main()
{
const int GREETING_MAXLENGTH = 10;
char greeting[GREETING_MAXLENGTH + 1] = "Hello";
char t[] = ", World!";
append(greeting, GREETING_MAXLENGTH, t);
cout << greeting << "\n";
return 0;
}
答案 0 :(得分:4)
包含<cstring>
标题应该解决(应该已经解决)问题。我的怀疑是正确的:只有Eclipse是愚蠢的,它给你一个误报。
在这种情况下,不要相信IDE!总是尝试编译源文本 - 如果编译器接受它,那么IDE中的静态分析工具是错误的。