I wrote a program several years ago that I run every day. I wanted to make a small change to it, but then it would not compile. This is strange because I simply changed a value (from 20 to 30), which should not have any effect on whether it compiles or not. But now it does not compile! It did compile a few years ago, and now it does not. There are likely several things that have changed since. Here is a short program that demonstrates the same problem. carmaux:~$ cat strcpy_err.cpp #include #include #include #include #include #include using namespace std; main(int pcount, char *params[]) { char fname1[512]; fname1[0] = '\0'; if (pcount >= 2) strcpy(fname1, params[1]); cout << "first parameter is " << fname1 << endl; return(0); } carmaux:~$ g++ strcpy_err.cpp strcpy_err.cpp: In function `int main(int, char**)': strcpy_err.cpp:22: error: `strcpy' was not declared in this scope carmaux:~$ Now I'll make a change to fix it... carmaux:~$ cat strcpy_err.cpp #include #include #include #include #include #include using namespace std; main(int pcount, char *params[]) { char fname1[512]; fname1[0] = '\0'; if (pcount >= 2) strcpy(fname1, params[1]); cout << "first parameter is " << fname1 << endl; return(0); } carmaux:~$ g++ strcpy_err.cpp carmaux:~$ ./a.out hello first parameter is hello I made a simple change, and then it compiled. The change was in the include of "cstring" instead of "string". Changing "string.h" would have also worked. -- Michael Weeks, copyright 2012