Компиляторы
Посоветуйте чего нибудь.
Пасибки. :-))
Я начинающий программист, ищу компилятор С/С++ по возможности наиболее последней версии. Проблема, собственно, вот в чем: необходима по крайней мере поддержка перегруженных функций. В Linux компилирую программу с помощью GCC, он говорит, что "функция не может быть перегружена", Borland C v.3.1 под win32 то же самое говорит.
Посоветуйте чего нибудь.
Пасибки. :-))
Может быть проблема и не в компиляторе вовсе...;)
Не знаю что конкретно делается в линухе - с ним мало работал - во фришке все нормально работает - с тем же gcc. Только при компиляции сипласовских прог команда вызывается СС а не gcc. Если есть возможность качать (300 MB) - пиши в приват выложу то что нужно.
Да я тут под винду откопал Borland C++ BuilderX, сначала на нем потренируюсь... Кто скажет, чем BuilderX отличается от "обычного" Builder'а?
P.S. Существует ли какой нибудь стандарт (ISO/RFC?), описывающий функции языка, которые должен поддерживать компилятор, соответствующий данному стандарту?
ISO/IEC 9899 от 1999 года для языка Си.
ISO/IEC 14882 от 1998 года для языка Си++.
Важен еще стандарт для Си от 1989 года с исправлениями, но его название я не помню. Заметь, что подмножеством языка Си++ является язык Си именно 89 года, а не 99 года. Есть еще POSIX, но это стандарт на API UNIX-подобных ОС, а не языка. Ребятам из FSF, которые занимаются gcc, не понравился стандарт 99 года и они начали выдумывать свой, но это можно назвать только ренегатством.
Я начинающий программист, ищу компилятор С/С++ по возможности наиболее последней версии. Проблема, собственно, вот в чем: необходима по крайней мере поддержка перегруженных функций. В Linux компилирую программу с помощью GCC, он говорит, что "функция не может быть перегружена", Borland C v.3.1 под win32 то же самое говорит.
Посоветуйте чего нибудь.
Пасибки. :-))
Любой CPP компилятор прекрасно перегружает функции. Просто, чтобы перегрузить функцию, необходимо выполнить некоторые правила, которым твоя перегрузка скорее всего не соответствует.
Еще. Перегрузка кажись есть только в Си++, а в Си, вроде бы нет...
А отличается Билдер от БилдерХ своей IDE и вообще это другая идеология. У меня вообще сложилось мнение, что Х - это аналог не Билдера, а MS Visual C++
Из-за чего может выдавать ошибку WinXP при компиляции очень простенькой проги (компилятор ошибок не нашел)? Выдается стандартное окошко с сообщением о "недопустимой операции" и на этом все заканчивается. (BuilderX v.1.0)
Что программа пыталась сделать? Посмотри опцыи компилятора.
Что программа пыталась сделать? Посмотри опцыи компилятора.
Я лучше сразу прогу напишу. Просто не представляю, что может тут быть не так.
#include <iostream>
using namespace std;
int pow ( int value, int step )
{
int result = 1;
for ( ; step > 0; --step )
result = result * value;
return result;
}
int main()
{
long number, exp;
cout << "enter the number\n";
cin >> number;
cout << "enter exp\n";
cin >> exp;
cout << "result =" << pow ( number, exp ) << "\n";
return 0;
}
А где можно достать инфу по компилятору builderX?
Я лучше сразу прогу напишу. Просто не представляю, что может тут быть не так.
#include <iostream>
using namespace std;
int pow ( int value, int step )
{
int result = 1;
for ( ; step > 0; --step )
result = result * value;
return result;
}
int main()
{
long number, exp;
cout << "enter the number\n";
cin >> number;
cout << "enter exp\n";
cin >> exp;
cout << "result =" << pow ( number, exp ) << "\n";
return 0;
}
А где можно достать инфу по компилятору builderX?
И в Билдере и в .NET все нормально работает. BorlandX по рукой нет поэтому ошибку не нем воспроизвести не могу, посмотри дамп памяти и системные записи - может там выкопаешь...Проблема может быть как в самом компиляторе, так и в линковке объектных модулей - запусти компилятор и линковщик из cmd с параметром помощи. Запусти на другой системе.
Попробуй поискать ответ вот здесь , может кто то уже сталкивался с чем нибудь подобным.
Я лучше сразу прогу напишу. Просто не представляю, что может тут быть не так.
#include <iostream>
using namespace std;
int pow ( int value, int step )
{
int result = 1;
for ( ; step > 0; --step )
result = result * value;
return result;
}
int main()
{
long number, exp;
cout << "enter the number\n";
cin >> number;
cout << "enter exp\n";
cin >> exp;
cout << "result =" << pow ( number, exp ) << "\n";
return 0;
}
А где можно достать инфу по компилятору builderX?
Проблема в функции pow.
Точнее в ее имени. Назови ее по другому. Дело в том, что в std есть такая функция. Поэтому получается, что ты ее перегружаешь.
Проблема в функции pow.
Точнее в ее имени. Назови ее по другому. Дело в том, что в std есть такая функция. Поэтому получается, что ты ее перегружаешь.
Еще один яркий пример того, что не стоит пользоваться using namespace.