Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!