Descubre por qué aparece este error en tu código C++ y cómo solucionarlo.

Cómo resolver el error de C++ C4996 'getch': el nombre POSIX de este elemento está obsoleto. En su lugar, utilice el nombre conforme a ISO C y C ++: _getch

Para los principiantes en C++, el uso de herramientas modernas puede convertirse en un gran dolor de cabeza, especialmente cuando la versión de VS de tu escuela es bastante antigua y tienes la última versión de VS en casa. Uno de los ejercicios más conocidos por los estudiantes, es el famoso hola mundo en este idioma. Jugando con una aplicación de consola, el ejercicio es simple, imprime "hola mundo" y mantén la consola abierta para ver el mensaje impreso. De acuerdo con el estilo de programación de tu profesor, puedes recibir un fragmento de ejemplo usando cout:

#include <iostream>
#include <conio.h>

using namespace std;

void main(void)
{
	cout << "Hello World" << endl;

	getch();
}

O usando printf para imprimir el texto en la consola:

#include <iostream>
#include <conio.h>

void main(void)
{
	printf("Hello World");

	getch();
}

Ambos scripts son totalmente válidos y utilizan el método getch para mantener la consola abierta. Deberían funcionar normalmente en los compiladores de la escuela donde VS siempre está desactualizado, sin embargo, si usa un compilador moderno para compilar cualquiera de los ejemplos anteriores (usando la última versión de Visual Studio), enfrentará la excepción. El problema es que el método getch es una función no estándar, y los compiladores de MS tradicionalmente los han ofrecido con dos nombres, pero Microsoft decidió definir el nombre sin subrayado en desuso, porque esos nombres están reservados para el programador.

Solución

La solución alternativa más sencilla para este problema es utilizar el método _getch con un guión bajo como prefijo:

#include <iostream>
#include <conio.h>

using namespace std;

void main(void)
{
	cout << "Hello World" << endl;

	// Utilice el método getch con un guión bajo prefijado
	_getch();
}

Este método funciona igual pero no se reconocerá como obsoleto. También puede utilizar el método cin.get del espacio de nombres estándar:

#include <iostream>
#include <conio.h>

using namespace std;

void main(void)
{
	printf("Hello World");

	// Permitir la entrada de texto en la línea de comando
	// esto mantendrá la consola abierta
	cin.get();
}

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores