Вы можете «спросить» компилятор (и / или компоновщик), где он определен, создав второе определение этой функции.
void foo();
void foo() // function you are looking for
{
}
void foo() // second definition to tease the compiler.
{
}
Теперь компилятор будет жаловаться и давать вам подсказку
main.cpp: In function ‘void foo()’:
main.cpp:7: error: redefinition of ‘void foo()’
main.cpp:3: error: ‘void foo()’ previously defined here
Компоновщик теперь будет жаловаться и давать вам подсказку.
b.cpp:(.text+0x6): multiple definition of `foo()'
Теперь вы знаете, что настоящий foo находится в b.cpp.
Но что еслион определен в заголовочном файле?
main.cpp:
#include "secret.h"
void foo() // second definition to tease the compiler.
{
}
secret.h:
void foo() // function you are looking for
{
}
Теперь компилятор найдет его для вас:
main.cpp: In function ‘void foo()’:
main.cpp:3: error: redefinition of ‘void foo()’
secret.h:1: error: ‘void foo()’ previously defined here
Теперь вы знаете, что настоящее `foo 'определено в secret.h.