|
Тема |
Re: [C++] Интересен проблем... [re: Pesho®] |
|
Автор |
DonAngel (void) |
|
Публикувано | 08.01.03 16:07 |
|
|
Господа, не така ;)
Във всички компилатори има библиотечната функция (която общо-взето е библиотечен макрос - за да е универсален относно типизацията и да е в същото време C) max! Дефиниран е по следният начин:
#define max(a, b) ((a) > (b) ? (a) : (b))
Expand-ването му довежда до кода, който съм сложил по-горе :). Въобще не става въпрос за викане на функция (още по-малко от STL - да видяхте някъде using namespace?) или каквото и да е там - просто този код е взет (по стечение от обстоятелствата) от един мой сорс, и съдържа банална грешка - липсващ знак за равно '='. Обаче - М$ и SUN компилират кода - щото смятат че е декларация на функция (вътре в тялото на функция). Добре, че НР спаси положението и откри синтактичната грешка.
Подобен код е напълно компилируем във VC:
----
int main(int argc, char *argv[])
{
int f(3);
....
}
----
Което ДОСТА ме озадачи!
Въпроса е - доколко това са бъгове в компилатор(ите), и доколко това е стандартен израз...
Май трябваше да пиша [Expert C++] в subject-a... :)
Поздрави!
Д.
|
| |
|
|
|