Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

248
Visualizações
How to mark function argument as output

C# allows to mark function argument as output only:

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

Is it possible to do something similar in C/C++? This could improve optimization. Additionally is should silence out warnings "error: 'myVar' may be used uninitialized in this function", when variable is not initialized and then passed to function as output argument.

I use gcc/g++ (currently 4.4.7) to compile my code.

Edit: I know about pointers and references, this is not what I am looking for. I need something like this:

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);
    //...
}

Edit 2: Some extra code is needed to reproduce warning "'myVar' may be used uninitialized in this function". Additionally you have to pass -Wall -O1 to 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 Respostas
Responde à pergunta

0

"Is it possible to do something similar in C/C++?"

Not really. Standard c++ or c doesn't support such thing like a output only parameter.

In c++ you can use a reference parameter to get in/out semantics:

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

For c you need a pointer, to do the same:

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

Note that there are no distinctions between out and in&out parameters, unless you use a const reference (which means input only):

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

0

When you want to pass an arg as output in C++ you pass it as a reference :

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

and you must initialize it before doing anything on it.

Note : You can specify when you want the arg to be just an input with a const ref :

 void func(const int &i)
{
    i = 44;
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda