Der Code kompilieren ohne Fehler, würde ich gerne wissen, was ist die unterschiedliche deklarierende externe Funktion innerhalb und ohne Namespace?Aufruf externe Funktion ohne Angabe des Namespace
--a.h--
namespace mynamespace {
extern void foo();
}
--a.c--
namespace mynamespace {
void foo(){
dosomething;
};
}
Gibt es Bedenken, dass ich darum kümmern sollte, wenn Aufruf foo() ohne Angabe Namensraum?
#include "a.h"
int main(int argc char *argv)
foo()
}
statt
#include "a.h"
int main(int argc char *argv)
mynamespace::foo();
}
* "Gibt es irgendwelche Bedenken, über die ich beim Aufruf von foo() nachdenken sollte, ohne den Namespace anzugeben?" * Versuchen Sie es, Sie werden es sehr schnell herausfinden. Der Compiler wird Ihnen sagen, was er von Ihrem Code hält. –
@IgorTandetnik seltsame Dinge ist, dass mein Compiler keine Warnung oder Fehler zeigte, verwende ich gcc-4.9 auf debain. –
Die Übersetzungseinheit mit 'main', wie gezeigt, [kann nicht kompiliert werden] (http://rextester.com/UQO84160). Wenn dies der Fall ist, geben Sie entweder eine Deklaration von "foo" in einem globalen Namespace an, oder Sie verwenden 'namespace mynamespace;' oder 'using mynamespace :: foo;' irgendwo in Ihrem Code, das Sie nicht angezeigt haben. –