在不指定命名空间的情况下调用外部函数

calling extern function without specify namespace

代码编译没有错误,我想知道在命名空间内和不在命名空间内声明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();
}

原来using namespace mynamespace;已经在其他头文件中声明了。所以如果一个文件包含头文件,其中已经定义了using namespace mynamespace;,那么当前的头文件也会受到影响。