Tipos de Errores y Causas
Errores de Sintaxis
Los errores de sintaxis ocurren cuando el código viola las reglas gramaticales del lenguaje C++. Son los más comunes y fáciles de detectar.
Ejemplos Comunes de Errores de Sintaxis
// Falta de punto y coma
int x = 5 // Error: se esperaba ';' al final de la instrucción
// Corchetes desajustados
void function() {
int x = 10;
if (x > 0 { // Error: falta el corchete de cierre
// Bloque de código
}
}
Errores Semánticos
Los errores semánticos implican lógica incorrecta o desajustes de tipos que el compilador puede detectar.
Ejemplo de Desajuste de Tipos
int main() {
std::string name = 42; // Error: no se puede convertir un entero a una cadena
return 0;
}
Errores de Enlace
Los errores de enlace ocurren cuando el compilador no puede resolver referencias entre diferentes módulos de código.
Tipos de Errores de Enlace
| Tipo de Error |
Descripción |
Ejemplo |
| Referencia no definida |
Falta la definición de la función |
Llamando a una función no declarada |
| Definición múltiple |
Declaraciones de símbolo duplicadas |
Definiendo una función en varios archivos |
Errores de Compilación Relacionados con la Memoria
graph TD
A[Errores Relacionados con la Memoria] --> B[Variables no Inicializadas]
A --> C[Uso Incorrecto de Punteros]
A --> D[Problemas de Asignación de Memoria]
Ejemplo de Error de Puntero
int* ptr; // Puntero no inicializado
*ptr = 10; // Comportamiento indefinido
Errores de Programación de Plantillas y Genéricas
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
// Error si el operador '+' no está definido para el tipo personalizado
MyCustomType result = add(obj1, obj2);
return 0;
}
Categorías de Advertencias de Compilación
| Nivel de Advertencia |
Descripción |
Acción Recomendada |
| Bajo |
Problemas menores |
Revisión opcional |
| Medio |
Posibles problemas |
Investigar |
| Alto |
Posibles errores |
Corrección inmediata |
Buenas Prácticas con LabEx
- Siempre compile con las banderas de advertencia (
-Wall -Wextra)
- Lea los mensajes de error cuidadosamente
- Utilice las características modernas de C++ y los punteros inteligentes
- Actualice regularmente el compilador y las herramientas