После небольшого вступления начинается практическая часть.
Например, в С++ можно объявить и использовать перечисление так:
enum viruses {no_virus=0, COM, overwite1, overwrite2, companion, parasitic, win9x};
...
void TreatFile(viruses type)
А в C нужно указывать ключевое слово enum и при вызове функции:
void TreatFile(enum viruses type)
иначе при объявлении будет ошибка
error: expected declaration specifiers or ‘...’ before ‘viruses’
Если для С++ определение переменной булевого типа вполне нормально:
bool option;
то компиляция той же конструкции в C может выдать ошибку из за отсутствия такого типа данных:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘options’
и указать на непонятность констант true и false:
error: ‘true’ undeclared (first use in this function)
Это решается просто - объявлением однобайтового типа bool и определения констант true и false:
#ifndef __cplusplus
#ifndef bool
typedef char bool;
#define true 1
#define false 0
#endif
#endif
Или объявление переменных непосредственно в цикле в С++ разрешено и такая конструкция будет правильной
for (int i=beg;i<=buffersize;i++)
{
buffer[i]=0×00;
}
А в С поступать таким образом нельзя
error: ‘for’ loop initial declaration used outside C99 mode
и нужно объявлять переменную-итератор перед использованием в цикле
int i;
for (i=beg;i<=buffersize;i++)
{
buffer[i]=0×00;
}
Все вышесказанное проверено на компиляторе GCC версии 4.2.3

(4 out of 5)











0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment