我遇到的问题与’greentype’提到的问题基本相同
http://www.cplusplus.com/forum/beginner/12458/
http://www.cplusplus.com/forum/beginner/12458/
我通过名称空间共享变量,当我尝试将函数定义放入单独的文件时出现问题.
考虑以下示例,其中我想传递变量’i’,已定义
在主代码中,函数a():
* nn.h:*
#ifndef _NN_H_ #define _NN_H_ namespace nn { int i; } #endif
* main.cpp *
#include <iostream> #include "nn.h" using namespace std; using namespace nn; void a(); int main() { i=5; a(); } void a() { using namespace std; using namespace nn; i++; cout << "i = " << i << endl; }
但是现在如果我把a()的定义放到一个单独的文件中……
* a.cpp *
#include <iostream> #include "nn.h" void a() { using namespace std; using namespace nn; i++; cout << "i = " << i << endl; }
…然后我在链接时遇到’多重定义’错误(g main.cpp
a.cpp -o main).如果我在头文件’extern’中做’i’声明(如
在其他论坛中提出),我得到’未定义引用’错误.当’i’在标题中声明为const时,我可以编译,但这不是我想要的.
任何建议都非常感谢.