Error! E2028: int near Function() is an undefined reference
Error! E2028: int near ICppFunction() is an undefined reference
file MAIN.obj(C:\MAIN.CPP): undefined symbol int near Function()
file MAIN.obj(C:\MAIN.CPP): undefined symbol int near ICppFunction()
Error: Linker returned a bad status
CLANG input:
clang -x c++ FileName FileName.cpp FileName.icpp main.cpp
CLANG output files:
a.out
Conclusion:
Some compilers can resolve extension clashes internally, but others only with output renaming.
Notes:
For testing used following tools:
gcc (TDM-2 mingw32) 4.4.1
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Open Watcom C/C++32 Compile and Link Utility Version 1.9beta1 LA
clang version 1.1 (trunk 98527)
Source code:
File FileName:
#include "FileName.h"
int Function()
{
return 0;
}
File FileName.cpp:
#include "FileName.h"
int CppFunction()
{
return 1;
}
File FileName.h:
#ifndef __FileName_h__
#define __FileName_h__
int Function();
int CppFunction();
int ICppFunction();
#endif
File FileName.icpp:
#include "FileName.h"
int ICppFunction()
{
return 2;
}
File main.cpp:
#include "FileName.h"
int main()
{
int result = Function() + CppFunction() + ICppFunction();
return result; // 3
}