|
Тема |
[C++] Интересен проблем... |
|
Автор |
DonAngel (void) |
|
Публикувано | 08.01.03 12:28 |
|
|
Дали следният код според вас е по стандарт?
-----
#include "stdlib.h"
int f1()
{
return 0;
}
int f2()
{
return 1;
}
int main(int argc, char* argv[])
{
int sss max(f1(),f2()); // ТУК!!
return 0;
}
-----
Този код се компилира без проблем от следните компилатори:
- Visual C 6 (задължително конзолна апп, или трябва да смените stdlib.h с minmax.h ако използвате MFC)
- SUN CC
Очевидно тези, които успяват да го компилират, свеждат "проблема" до декларация на функция - след като препроцесора мине, се получава нещо като:
int sss ((f1()) > (f2()) ? (f1()) : (f2()));
Следните компилатори дават грешка:
- Cameau online compiler () дава и по-нормална грешка;
- HP CC (определено най-стандартният от "истинските" компилатори, които пробвахме). Дава и най-човешката грешка ("очаква се '='")
- GCC 2.96 - parse error :) - личи от от 100 км Lex/Yacc-a в него
Въпроса е - ДАЛИ този израз е по ISO 14992 или не е? Как мислят експертите? Май не е (щото най-стандартните се издъниха), но все пак?
Поздрави!
Д.Редактирано от DonAngel на 08.01.03 12:31.
|
| |
|
|
|