Измените заголовок следующим образом
#ifndef _HEAD_H_
#define _HEAD_H_
extern int my_var;
#endif
И, например, добавьте строку в модуль с основным
#include "head.h"
int my_var = 100;
int main() { return 0; }
. Проблема заключается в том, что, поскольку заголовок включен в два модулей, то каждый модуль содержит переменную с внешней связью с тем же именем, что и переменная в другом модуле. И компоновщик не знает, какую переменную использовать.