Среда разработки С++
Вот так вот, решил ознакомиться с сим языком и дилемма.
Пока нужна возможность только писанины чистого си, пока даже консольного, но с гуи билдером желательно каким-то. Основные требования - няшность и удобный отладчик. Пробовал визуал студию - норм, но все равно что-то не то. Коде::блок - лучше, но как-то душа не лежит. И в отладчике почему-то не останавливается на брейкпоинтах. Кюти билдер - выглядит оче ок, но я пока не понимаю зачем. А еще его хрен настроишь, еле прикрутил к нему компилятор, но отладчик все равно не работает. Пока хочу добить кютибилдер. Но надо ли он мне? Там вообще можно на С++ ванильном писать и билдить его, чтоб на других пеко запустилось? |
Хм. Только донастраивал кюти билдер, неплохо.
Правда почему там пустые переменые и мыссивы в отладчике показываются со случайными значениями? |
Цитата:
Цитата:
Если только под win, то VS + WPF, под Mac Xcode или AppCode. Но вплане изучения языка не советую забивать Qt голову. Да кстати почему С, а не С++? Сейчас я использую AppCode, лучше пока не встречал. Хотя в основном приходится писать код в консольном vim'e ) Цитата:
PS: начни с vim + g++/clang++ + make + книги (Страуструп, Мейерс, Элджер, Седжвик, Дьюхерст) |
Цитата:
const foo *i = &bar; то IDE никаким образом не будет знать (если не в режиме отладки), какое значение хранит переменная (если это мусор) или на какую ячейку памяти она ссылается. Поэтому я предположил что скорее всего имеется ввиду размер занимаемой памяти для конкретной архитектуры: const std::size_t size = std::sizeof(foo); |
Может немного не в тему, но есть такие штуки, как компиляторы онлайн. Софтину серьёзную ненапишеш, но поиграться в целях обучения очень даже прикольно.
programr Куча демок которые можно запускать и редактировать, куча языков и платформ. Демки разбиты по темам, проилюстрированы все основные возможности языка. главная http://www.programr.com/ С++ http://www.programr.com/zone/cpp <iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent//view/temp_1370396448/Example.cpp' width='100%' height='700' frameborder='0'></iframe> Что понравилось,на ресурсе дак это то что есть возможность мучить пробные приложения для IOS и Android, и что самое главное запускать. сначало compile потом run (вдруг первый раз компилятор кто увидел :) ) <iframe src='http://www.programr.com/embed.php?action=tf&path=demostudent/view/temp_1370397379/Example_1363180033291' width='100%' height='700' frameborder='0'></iframe> www.compileonline.com А вот здесь больше языков, но без демок. Зато можно пощупать всякую экзотику и ископаемых типо Ada или Algol-68 Сайт http://www.compileonline.com/ ссылка на С++ http://www.compileonline.com/compile_cpp_online.php |
Цитата:
Основное назначение таких сервисов как liveworkspace.org, codepad.org это дать возможность быстро проверить ту или иную особенность языка или просто создать демонстрационный пример для кого-то другого. |
Цитата:
Но вообще не знаю, я не по ним учился :) |
Цитата:
|
ну ты перегнул насчёт пяти лет помоему.
Что касается основных конструкций то их можно ну скажем за неделю выучить. Потом месяцами будешь забывать, путаться, заглядывать в справочник. Но это пройдёт, и спустя какое то время можно начать писать вполне уверенно. Неплохо решать типовые задачи, тогда станет ясно где и что уместно применять. Для продакшн конечно придётся в библиотеках разбираться в том же MFC хотя бы. Ну а что касается написание сложных программ, то этот навык не привязан к языку. Если можешь написать большое приложение на javascript то сможешь и на C++. Обретение этого навыка состоит из изучения программной инженерии, эксперементов и изучения чужих исходников. Так что я несогласен с отсутствием логики. Да и Qt для JS программиста не самый плохой выбор, с учётом того насколько активно там применяется html и Js. Программу потом можно будет собрать под windows, linux, и macOS. C 5й версии приложения можно запускать на андроид а с 5.2 (осень 2013) на IOS Хотя конечно решение принимать надо с оглядкой на рынок, c оглядкой на количество QT вакансий. |
Цитата:
Цитата:
к примеру финт с потоками:
struct log final : public std::ostream {
public:
explicit log(const std::string &type, const std::string &file = "") :
std::ostream(new buffer(type, file)) {}
;
~log() {
delete std::ostream::rdbuf();
}
private:
struct buffer final : public std::stringbuf {
public:
explicit buffer(const std::string &type, const std::string &file) :
type (type), file (file) {}
;
~buffer() {
std::streambuf::pubsync();
}
virtual int sync();
private:
const std::string type, file;
}
;
log(const log&) = delete;
const log& operator=(const log&) = delete;
}
;
Использую для того чтобы писать красиво в лог:
using LOG_INFO = ::log;
LOG_INFO ("error", (*error)->name) << "file: " << (*file)->name;
Или еще пример:
template <typename T>
struct find_equal : std::binary_function <T, T, bool>
{
find_equal(const T &value) : value(value) {};
bool operator()(const T &left, const T &right) const {
return left == value && right == value;
}
private:
T value;
};
Используется как предикат:
file.erase(std::unique(file.begin(), file.end(), ::find_equal<char>(' ')), file.end());
Хотя сейчас std::binary_function <...> deprecated, потому что можно писать так:
file.erase(std::unique(file.begin(), file.end(), [](const char &left, const char &right) {
return left == value && right == value;
}), file.end());
Попробуй все это объяснить новичку. Даже на самый простой вопрос чем отличаются union, struct, class не каждый ответит, особенно если не читал С++11, к примеру:
union __union final {
const int i;
};
using foo = const union ::__union;
foo un = { .i = 0 };
std::cout << un.i << std::endl; // 0
Пруф Ну и на последок прикоюха с перечислениями:
enum __enum : int { value = 0 };
std::cout << __enum.value << std::endl; // 0
Пруф Цитата:
Цитата:
void *(*foo)(int *); Я понимаю если бы там было бы обращение к другим членам класса типа: (*parent)->method.property Ну или здесь: using buffer = std::istreambuf_iterator<char>; content.assign((buffer(file)), buffer()); Сейчас я понимаю почему это сделано так, но это нужно еще принять ) Или вот приколюха из нового стандарта: i++++++++++; // i += 5; Ну или вместо того чтобы добавить std::lexical_cast<...>() они добавили: stoi, stol, stoll, stoul, stoull, stof, stod, stold, to_string, to_wstring к имеющимся strtod, strtold, strtof, strtoul, strtoull, trtol, strtoll, atoi, atol, atoll спрашивается нафига? |
| Часовой пояс GMT +3, время: 17:53. |