logo
Литература_1 / photon_old

Потенциальные проблемы с генерированием proto.H

Для повышения скорости программа, сканирующая Ваши файлы с исходным кодом на предмет прототипов функций, игнорирует препроцессорные директивы. Это может привести к определённым проблемам в файле proto.h.

Например, пусть мы имеем следующий код:

#ifdef DOUBLE

for (i=0; i<18; i++, i++) {

#else

for (i=0; i<18; i++) {

#endif

x += 2*(i+x);

y += x

}

Поскольку процессорные директивы игнорируются, генератор прототипа видит следующее:

for (i=0; i<18; i++, i++) {

for (i=0; i<18; i++) {

x += 2*(i+x);

y += x

}

Две открытые фигурные скобки вызовут определённое замешательстро, и будет сгенерирован неверный прототип. Проверяйте подобные вещи, если генератор прототипов создаёт неверные прототипы.

Чтобы исправить код, приведённый выше, мы должны удалить открывающие скобки и разместить их в строке после #endif. Или же мы можем сделать таким образом:

#ifdef DOUBLE

#define ADDAMOUNT 2

#else

#define ADDAMOUNT 1

#endif

for (i=0; i<18; i += ADDAMOUNT) {

x += 2*(i+x);

y += x;

}

    1. Yandex.RTB R-A-252273-3
      Yandex.RTB R-A-252273-4