En supposant que vous voulez vraiment une variable indépendante appelé i dans chacun de ces deux fichiers, vous devez les préfixe avec static
afin de leur donner internal linkage.
static int i = 10;
Si vous voulez Je dois être la même variable dans les deux fichiers, de sorte que les changements dans l'un affectent l'autre, utilisez les réponses que vous étiez given 3 hours ago lorsque vous avez demandé une variante de la question. S'il doit être partagé, vous devez définir la variable à un endroit. Pour ce qui est de savoir pourquoi cela n'a pas provoqué d'erreur sans init, je pense que c'est parce que vous n'utilisiez pas la variable tant qu'elle n'avait pas besoin d'être initialisée et donc le compilateur l'a ignoré.
duplication possible de [lien de variable globale par défaut c & C++, problème multiple de déclaration et de définition] (http://stackoverflow.com/questions/6371048/cc-default-global-variable-linkage-multiple-declaration-definition- probl) – legends2k