I am pretty sure "array" is not a keyword in c. There is the std::array type, but that's only in c++.
'array' is a keyword in C++ IIRC, so it's a good habit to not use it as a variable name. Rather than using #define to define constants it's better to just make constants:const size_t SIZE = 10;This gives you type control and avoids macro expansion problems like the one you encountered.
Using #define is almost the same as using your a text editor's 'find-and-replace' function. There are some cases where it's useful, but usually it causes more problems than it solves.
Also, nice analogy there with the "find and replace", I've never thought about it like that.