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.