Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

246
Vistas
Cómo marcar el argumento de la función como salida

C# permite marcar el argumento de la función solo como salida:

 void func(out int i) { i = 44; }

¿Es posible hacer algo similar en C/C++? Esto podría mejorar la optimización. Además, debe silenciar las advertencias "error: 'myVar' puede usarse sin inicializar en esta función", cuando la variable no se inicializa y luego se pasa a la función como argumento de salida.

Uso gcc/g++ (actualmente 4.4.7) para compilar mi código.

Editar: sé sobre punteros y referencias, esto no es lo que estoy buscando. Necesito algo como esto:

 void func(int* __attribute__((out)) i) { *i = 44; } void func2() { int myVal; // gcc will print warning: 'myVar' may be used uninitialized in this function func(&myVal); //... }

Edición 2: se necesita algún código adicional para reproducir la advertencia "'myVar' puede usarse sin inicializar en esta función". Adicionalmente tienes que pasar -Wall -O1 a gcc.

 void __attribute__((const)) func(int* i) { *i = 44; } int func2() { int myVal; // warning here func(&myVal); return myVal; }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

"¿Es posible hacer algo similar en C/C++?"

Realmente no. El estándar c++ o c no es compatible con un parámetro de solo salida.

En C++ puede usar un parámetro de referencia para entrar/salir de la semántica:

 void func(int& i) { // ^ i = 44; }

Para c necesitas un puntero, para hacer lo mismo:

 void func(int* i) { // ^ *i = 44; // ^ }

Tenga en cuenta que no hay distinciones entre out parámetros in&out , a menos que use una referencia const (que significa solo entrada):

 void func(const int& i) { // ^^^^^ i = 44; }
over 4 years ago · Santiago Trujillo Denunciar

0

Cuando desee pasar un argumento como salida en C++, páselo como referencia:

 void func(int &i) { i = 44; }

y debe inicializarlo antes de hacer nada en él.

Nota : puede especificar cuándo desea que el argumento sea solo una entrada con una referencia constante:

 void func(const int &i) { i = 44; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda