Вы мне объясните как работает инструкция которую я описал
Какой тип у переменной i?
Эта конструкция может делать целое ничего, а может делать что-то важное. Зависит от типа переменной и области видимости, где она объявлена. Но тела у этого цикла нет, да.
Вот объясните мне, глупому линуксоиду, что здесь происходит:
CODE
template <LPCSTR caBaseNames[]> class CAniFVector {
public:
ANIM_VECTOR A;
IC void Load(CKinematicsAnimated *tpKinematics, LPCSTR caBaseName)
{
A.clear ();
string256 S;
for (int j=0; caBaseNames[j]; ++j); // <-- вот тут
A.resize (j); // <-- и вот тут
for (int i=0; i<j; ++i) // <-- и тут
{
strconcat (sizeof(S),S,caBaseName,caBaseNames[i]);
A[i] = tpKinematics->ID_Cycle_Safe(S);
#ifdef DEBUG
if (A[i] && psAI_Flags.test(aiAnimation))
Msg ("* Loaded animation %s",S);
#endif
}
}
};
public:
ANIM_VECTOR A;
IC void Load(CKinematicsAnimated *tpKinematics, LPCSTR caBaseName)
{
A.clear ();
string256 S;
for (int j=0; caBaseNames[j]; ++j); // <-- вот тут
A.resize (j); // <-- и вот тут
for (int i=0; i<j; ++i) // <-- и тут
{
strconcat (sizeof(S),S,caBaseName,caBaseNames[i]);
A[i] = tpKinematics->ID_Cycle_Safe(S);
#ifdef DEBUG
if (A[i] && psAI_Flags.test(aiAnimation))
Msg ("* Loaded animation %s",S);
#endif
}
}
};
и заметьте что j больше нигде не обявлена кроме чудной конструкции кастрированного цикла for.
Что самое интересное, 2005 студия отлично это понимает. В отличие от 2017...2019.
И такое место в коде не одно, их десятки.