Как прочитать оператор :: в подобных случаях?

 

Есть такие вот строки:

//---
   bool b=true;
   for(int i=0; i<ArraySize(row.m_data); i++)
     {
      if(!BindStatement(pstmt,i,row.m_data[i]))
        {
         b=false;
         break;
        }
     }
   if(b)
      res=::sqlite3_step(pstmt); // executed
   ::sqlite3_finalize(pstmt);    // clean

Возник вопрос. Как это понимать? Имею ввиду все эти вызовы функций:

::sqlite3_*

То что так ограничивается область видимости, это понятно. Но если эти функции все находятся в одном инклюднике, уже говорит о том, что они вызовутся из того же инклюдника,а не из другого файла или другого какого-нить места. Тем более, функции достаточно узконаправленные. Явно подобных функций не будет находится в различных файлах.

Тем более, я заметил, что так пишет только один программист. У других я подобных местами каждострочных вызовов я не встречал. Местами чуть-ли не на каждой строке.

Как это понимать точно? Искал в книгах и поисковике, не нашёл. Думаю как такой запрос вообще составить..

 
Viktar Dzemikhau:

Есть такие вот строки:

Возник вопрос. Как это понимать? Имею ввиду все эти вызовы функций:

То что так ограничивается область видимости, это понятно. Но если эти функции все находятся в одном инклюднике, уже говорит о том, что они вызовутся из того же инклюдника,а не из другого файла или другого какого-нить места. Тем более, функции достаточно узконаправленные. Явно подобных функций не будет находится в различных файлах.

Тем более, я заметил, что так пишет только один программист. У других я подобных местами каждострочных вызовов я не встречал. Местами чуть-ли не на каждой строке.

Как это понимать точно? Искал в книгах и поисковике, не нашёл. Думаю как такой запрос вообще составить..

если вы в своём классе определите метод  sqlite3_finalize (например чтобы вести логи), то вызов

sqlite3_finalize(...) - это вызов вашего метода,

а ::sqlite3_finalize(..) - вызов оригинального метода.

Я таким образом подменяю всевозможные OrderXXX функции чтобы работать со своей базой ордеров типичным для MQL образом, но использовать старые и не только свои наработки

 
Maxim Kuznetsov:

если вы в своём классе определите метод  sqlite3_finalize (например чтобы вести логи), то вызов

sqlite3_finalize(...) - это вызов вашего метода,

а ::sqlite3_finalize(..) - вызов оригинального метода.

Я таким образом подменяю всевозможные OrderXXX функции чтобы работать со своей базой ордеров типичным для MQL образом, но использовать старые и не только свои наработки

Я так понимаю, если у кого не порядок с именованием функций (ну и соот-но переменных) это вариант. Получается, что таким образом вызовется тот же  ::sqlite3_finalize(..) из глобального контекста, где компановщик его найдёт, так? В таком случае, ели функции называть одинаково, можно объявить в нескльких инлюдниках одинаковые  ::sqlite3_finalize(..) и будет тоже касяк.

Я примерно так и думал, но удивительно. Ведь гораздно проще называть всё как нужно. Что бы имена были читабельны и несли смсыл. По крайне мере, в соглашение Java такое есть. А у плюсов я смотрю каждый называет как хочет. Какие-то однобуквенные переменные и бункции. Ужас.. Видимо это и есть причина подобных привычек.

Причина обращения: