Код компилируется без ошибок, я хотел бы знать, что представляет собой другая декларирующая функция extern внутри и без пространства имен?вызов функции extern без указания пространства имен
--a.h--
namespace mynamespace {
extern void foo();
}
--a.c--
namespace mynamespace {
void foo(){
dosomething;
};
}
Есть ли опасения, что я должен беспокоиться о том, когда вызова Foo() без с указанием имен?
#include "a.h"
int main(int argc char *argv)
foo()
}
вместо
#include "a.h"
int main(int argc char *argv)
mynamespace::foo();
}
* «Есть ли какие-либо опасения, что я должен беспокоиться при вызове foo() без указания пространства имен?» * Попробуйте, вы узнаете очень быстро. Компилятор расскажет вам, что он думает о вашем коде. –
@IgorTandetnik странные вещи в том, что мой компилятор не показывал никаких предупреждений или ошибок, я использую gcc-4.9 на debain. –
Блок перевода, содержащий 'main', как показано, [невозможно компилировать] (http://rextester.com/UQO84160). Если это так, то либо вы также предоставляете объявление 'foo' в глобальном пространстве имен, либо вы используете' namespace mynamespace; 'или' using mynamespace :: foo; 'где-то в коде, который вы не показывали. –