todas parametros lenguaje las globales funciones ejemplos creacion con c++ c compilation global-variables compiler-errors

parametros - Compila el error de redeclaración de la variable global en C++, pero no en C



variables en lenguaje c (2)

En C, las dos variables se combinan en una sola variable porque ninguna de ellas se inicializa explícitamente.

Si cambia ambos archivos h a:

// a.h int int_variable = 0;

y:

// b.h int int_variable = 0;

obtendrás un error de redefinición.

Supongamos que tengo esos tres archivos:

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++; }

C Principal

//main.c #include "a.h" #include "b.h" int main() { a_f(); b_f(); return 0; }

¿Por qué compilar en C ++ genera un error de redefinición, pero en C no? Soy desarrollador C ++, luego en C ++ tiene sentido para mí, pero ¿por qué en C esto no es un error?

Cuando ejecuté el código generado C, el resultado fue:

variable int: 0

variable int: 1


Las variables globales en el archivo de encabezado solo deben usarse junto con el modificador "extern". Sin excepciones. Reenviar declara su variable en uno o más archivos de encabezado (preferiblemente solo uno), luego defínalo en exactamente una unidad de compilación.