Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Все равно не понятно 07.10.08 13:19 Число просмотров: 2981
Автор: PS <PS> Статус: Elderman Отредактировано 07.10.08 13:23 Количество правок: 1
|
> > void f( int a ) - IN. > > void f( const int& a ) - IN. > > void f( int& a ) - OUT. > > Что делать в C? > Что делать с IN OUT параметрами? Что делать с OPTIONAL > параметрами (в C)? Что делать со всякими __out_ecount > (который позволяет находить переполнения буфера)? И т.д.. > > > Все прекрасно описывается средствами языка. Зачем > > втаскивать в текст дублирующие конструкции ? > Не все, не прекрасно и не дублирующие :-)
1. А что делать в ALGOL, LISP и других языках ? (это к вопросу о "C")
2.
void f( __out_encount(n) char* b, int n )
{
memset( b, 0, 2*n );
}
Скомпилится ? С варнингами - да. А можно и без варнингов. Запустится - да. Отработает - да. Память порушит - да.
И х. тогда было огород городить ?
/*!
@param out_str out строка заполненая n ASCII нулями
@param n in количество ASCII нулей для заполнения
*/
void f( std::string& out_str, int n )
{
out_str.append( n, '0' );
}
Память порушит - нет. Что in, что out видно ? да. SAL использован ? нет.
В каком то языке(компиляторе), то ли в VB, то ли в дельфи есть возможность при компиляции устанавливать: передаются параметры по значению или по ссылке.
И один и тот же код
function integer f( integer a){ a = 9; }
при разных ключах компиляции будет вести себя по разному.
Тут действительно SAL необходим ;)
|
|
|