Supponiamo che io ho questi tre file:Compilare l'errore ridichiarazione della variabile globale in C++, ma non in C
ah
//a.h header
#include <stdio.h>
int int_variable;
void a_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
bh
//b.h header
#include <stdio.h>
int int_variable;
void b_f()
{
printf("int_variable: %d\n", int_variable)
int_variable++;
}
principali .c
//main.c
#include "a.h"
#include "b.h"
int main()
{
a_f();
b_f();
return 0;
}
Perché la compilazione in C++ genera un errore di ridefinizione, ma in C no? Sono uno sviluppatore C++, quindi in C++ ha senso per me, ma perché in C questo non è un errore?
Quando ho eseguito il C codice generato, l'uscita era:
int variabile: 0
int variabile: 1
Duplica (sorta di). Vedi http://stackoverflow.com/questions/2331584/global-variable-implementation/2331782#2331782 e http://stackoverflow.com/questions/1987413/inclusion-of-unused-symbols-in-object-files-by -compiler-in-c-vs-c/1987495 # 1987495. La risposta è: C ha definizioni provvisorie, C++ no. –
duplicato esatto! –
Scusa, ho cercato davvero, ma vedo che l'ho fatto con parole chiave sbagliate: P, grazie Alok. – coelhudo