やはりソースを見てもらうのが一番早いと思ったので、下に載せます。
変数名などはテスト用プログラムなので適当にしております。
main.h
#ifndef _MAIN_H_
#define _MAIN_H_
#ifdef _MAIN_
const int a = 0;
#else
extern const int a;
#endif
#endif
変数定義、extern宣言のconstを外すとエラーは出ません。
何が問題なのでしょうか?
#ifndef _MAIN_H_
#define _MAIN_H_
#ifdef _MAIN_
const int a = 0;
#else
extern const int a;
#endif
#endif