Original Post
Is overriding a function of a library in accordance with C++ standard? The following code is passed by the VS 2005 and Dev C++. #include #include using namespace std; size_t strlen(const char* p) { return 0; } // !!! Note this !!! The standard library function strlen is deliberately overriden. int main(int argc, char *argv[]) { int n = strlen("Hello"); // n equals 0 system("PAUSE"); return EXIT_SUCCESS; } There is even no warning after compiling the code. In front of the fact, I have to make a guess that all the C++ compilers are conformed to the following rules: 1) The compiler first compiles all the source file included in the project into object files; 2) At link time, the compiler first searches the object files for all the unresolved symbols; if it fails to find some symbols, then the compiler will search the libraries which are included in the project to find the symbols. 3) If the object files containes a symbol, then the symbols that have the same name in the libraries will be ignored. Am I correct? Any help will be appreciated. Many thanks in advance. [Edited by - cqulyx on August 25, 2006 1:59:07 AM]