Насколько я понимаю, я могу использовать пространства имен, чтобы избежать переопределения функций друг над другом. Но что, если пространства имен имеют одинаковые имена?
Я включил оба файла .h ниже, названный VideoLibrary :: check (), и он компилируется. Почему? Не противоречит ли это цели пространства имен?
file1.h и file2.h:
namespace VideoLibrary
{
void check();
}
file1. cpp:
namespace VideoLibrary
{
void check()
{
printf("check1");
}
}
file2. cpp:
namespace VideoLibrary
{
void check()
{
printf("check2");
}
}
Меня больше всего беспокоит то, что мой проект включает внешние библиотеки, и я волнуюсь, что он включает функции с такой же сигнатурой, что и в моем проекте. Как я могу получить ошибку для такого случая во время компиляции? Я использую Xcode в качестве редактора, если это имеет значение.