I m sure it will throw compile error because
C never allow to do assignment in global section because when execution starts first it will provide memory to global variable which are initialize or define and then compiler will search for main function to start execution .
Here compiler is expecting only initialization in global section not assignment.
rest of part in program looks ok i mean extern int i is declaration and declaration can be done any number of times, int i = 5 initialization no issue in this part . but assignment i=10 in global section is incorrect we will get error.