Свой компилятор C++

Приветствую всех. Меня интересует, можно ли взять какой нибудь компилятор C++, и добавить туда свои библиотеки и так далее? Сделав новый компилятор? Допустим я хочу переписать iostream. Ну например оставить, и добавить библиотеку consolework, как это можно сделать?
14 ответов

Ну например оставить, и добавить библиотеку consolework, как это можно сделать?
Компилятор просто компилирует код, какой код компилировать ему как бы без разницы, главное чтобы он был грамотно написан.Напиши свою библиотеку и подключи ее также, как подключаются все остальные библиотеки, которые использует компилятор.


нет. мне нужно, что бы они входили как бы в компилятор. То есть, что бы я мог добавить библиотеки к компилятору, к стандартным библиотекам языка, и мог распространять


jonikster, у каждого программиста есть свой компилятор. Зачем им еще и твой с какими-то непонятными подификациями? Почему не распространять отдельно библиотеку, которую может подключить каждый к своему проекту?Но не суть, берешь любой компилятор с открытым исходным кодом, вносишь в этот код свои изменения. Далее, компилируешь этот компилятор каким-либо компилятором и получаешь на выходе свой собственный компилятор с твоими библиотеками и прочими приблудами.


понял. спс. а дело в том, что не каждый новичек поймёт зачем нужен cout << и что это. print() выглядит более приветлево


а дело в том, что не каждый новичек поймёт зачем нужен cout << и что это. print() выглядит более приветлево
Просто не каждый навичек удосуживается прочитать и осознать хотя бы одну книгу по изучаемому языку. А на вышеприведенный вопрос ответ запросто выдает гугл, если ты конечно тот самый новичек, который хочет понимать различие между cout и printf.


что не каждый новичек поймёт зачем нужен cout <<
Тогда ему вообще компилятор не нужен.


ну я знаком с основами C++, знаю, что printf из библиотеки C - это функция. а вот cout на функцию не смахивает.


а вот cout на функцию не смахивает.
Потому что это не функция. А объект.


если вы о объекте в ООП представлении, то это тоже не обект. т.к мы ниогде его не объявляем, да и доступ к свойствам и т.д идёт не так.


А не легче сделать свою библиотеку и подключить, чтоб потом не искать свои функции среди тысяч стандартных?


Я желаю просто сделать как бы версию упращенного C++. а то новичкам с каутами будет сложнее.


jonikster, он определяется в заголовке iostream, и является объектом класса std::ostream. Это и есть основы C++, которые, как Вы говорите, знаете.
да и доступ к свойствам и т.д идёт не так.
Вообще не понятно, что имеется ввиду. А как должно быть "так"?


т.к мы ниогде его не объявляем
тогда и printf не функция, мы же её нигде не объявляем Вообще странная логика. Во-первых, это будет левый, никому неизвестный инструмент, во-вторых, уверены, что он будет работать без багов или хотя бы это будет разработка достаточного уровня, чтобы кто-то занялся тестированием? В-третьих, а Вы уверены, что осилите разработку? В-четвертых, а Вы сможете спроектировать нормальный, удобный интерфейс для многих, а не только для себя? В-пятых, учить новичков тому, чтобы потом учить другому - глупо. Всё равно что учить математику, для того, чтобы потом экзамен по литературе сдавать.


по поводу функции, ну она объявляется в библиотеке. А по поводу cout, ну приведу пример. У нас в библиотеке есть console для работы с консолью. Если б cout был объектом, это бы было так.
#include <iostream>
using namespace std;
void main()
{
console con; //Объект console
con.print("Hello");
}
Ну или если ещё более труднее, то так:
#include <iostream>
using namespace std;
void Main()
{
console con;
con.open();
con.print("Hello");
con.close();
}
print в замену cout