C# позволяет пометить аргумент функции как выход только:Как пометить аргумент функции как выход
void func(out int i)
{
i = 44;
}
Можно ли сделать что-то подобное в C/C++? Это может улучшить оптимизацию. Кроме того, следует отключить предупреждения ». Ошибка:« myVar »может использоваться неинициализированным в этой функции», когда переменная не инициализируется, а затем передается функции как выходной аргумент.
Я использую gcc/g ++ (в настоящее время 4.4.7) для компиляции моего кода.
Редактировать: Я знаю о указателях и ссылках, это не то, что я ищу. Мне нужно что-то вроде этого:
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: Некоторые дополнительные код необходим для воспроизведения предупреждения «„MYVAR“может быть использована неинициализированным в этой функции». Кроме того, вам необходимо передать -Wall -O1 в gcc.
void __attribute__((const)) func(int* i)
{
*i = 44;
}
int func2()
{
int myVal; // warning here
func(&myVal);
return myVal;
}
Хотите указатели? Как 'void func (int * i) {* i = 44;}' (C)? –
C и C++ - разные языки. В C++ вы должны использовать ссылки, на C у вас есть только указатели. – szczurcio
Мне нужен дополнительный атрибут, чтобы отметить аргумент ptr/ref как только. Я обновил свой вопрос, чтобы заявить об этом. –