外部变量应该怎么定义和声明都在头文件中

外部变量应该如何定义和声明都在头文件中?
//头文件.h
//定义常数
#ifndef _constants
#define _constants

int a=10;
int b=20;
extern int b;
extern int a;

#endif

//main.cpp
#include"头文件.h"
...
printf("%d\n",a+b);
...

//结果是无法链接,错误提示是,在其他的cpp源文件里面显示这个错误:

error LNK2005: "int a" (?a@@3HA) 已经在 main.cpp.obj 中定义
error LNK2005: "int b" (?a@@3HA) 已经在 main.cpp.obj 中定义


我的目的是,a和b这两个变量在头文件中就设定好数值,然后在其他所有include这个头文件的源文件中,a和b都可见,并且可以直接使用而免去声明

怎样实现?

------解决方案--------------------

extern int a;
extern int b;
放在头文件中,

其他每个cpp文件都include""这个头文件,

然后
int a=10;
int b=20;
随便放在任何一个cpp文件中,但不要放在函数的内部,不然就不是外部变量了。

就跟在头文件里面声明函数,在cpp里面定义函数一样。