Ответы пользователя по тегу C++
  • Как сгенерировать код с++ из php?

    risik
    @risik
    Программист
    https://ru.wikipedia.org/wiki/HipHop_(%D1%82%D1%80...

    Но может лучше переписать?
    Ответ написан
    Комментировать
  • Как настроить eclipse c++ 11?

    risik
    @risik
    Программист
    Если не удается настроить все на своем компьютере с Windows (а это, на самом деле, дело не на 5 минут, если первый раз), то попробуйте использовать облачные IDE. По возможностям, конечно, они отстают от десктопных IDE, но зато там работает сразу все из коробки. Например, https://c9.io

    Для того, чтобы проверить работает ли MinGW, правильно ли он настроен и т.д.,
    • создайте простой текстовый файл, например a.cpp, в котором просто hello world из любого учебника.
    • введите с командной строки: g++ a.cpp

    Вот когда после такой команды вы не получите ошибку ОС о том, что g++ не найден, тогда запускайте Eclipse.
    Ответ написан
    Комментировать
  • Выбираю между C++ и C#. Что выбрать?

    risik
    @risik
    Программист
    Выбирая между C++ и C# надо выбирать оба. Вопрос только в последовательности. C# позволит быстрее начать зарабатывать. C++ позволит изучить как оно работает внутри. У C++ программистов имхо зп в среднем немного выше, чем у C#. Но даже если знать C++ только на уровне основ, то потом перейти на C# будет проще, чем с C# на C++.

    Но. начать программировать на C# можно намного быстрее, чем на C++. То есть, порог вхождения, особенно с Вашим бэкграундом намного у C++ намного выше.

    Поэтому, если именно для общего развития я бы рекоменловал C++
    Ответ написан
    Комментировать
  • Что означает сообщение компилятора g++ при работе с массивами?

    risik
    @risik
    Программист
    Поставьте символ = между объявлением массива и заданием его тела. И используйте форматирование кода здесь. Это кнопочка с тремя точками в редакторе.

    должно быть вот так:
    int num[8] =
    {
    1, 5, 4, 2, 7, 2, 1, 3
    };
    Ответ написан
  • Как создать REST API на C++?

    risik
    @risik
    Программист
    Для http сервера на C++ есть, например, POCO. pocoproject.org
    Правда, не уверен, есть ли там JSON из коробки.
    Ответ написан
    Комментировать
  • Как передать двумерный массив в функцию в виде параметра в C++?

    risik
    @risik
    Программист
    Остальные Вам правильно написали. Надо указывать размер строки.

    Если для Вас это неприемлемо, то есть другие варианты. Например, принимать
    float det(float**m, int rows, int cols)

    Но тогда передавать надо сложнее.
    например:

    int rows = ...;
    int cols = ...;
    float **m;
    m = calloc(rows, sizeof(float*));
    for (int i=0; i<rows; i++) {
      m[i] = calloc(cols, sizeof(float));
    }
    /* как-то заполняете значения */
    float res = det(m, rows, cols);


    Однако, такой код нормален для C, но не для С++. В C++ коде я бы поостерегся передавать двумерный массив. Впрочем, как и одномерный массив. Вместо это лучше сделать класс матрица. И все особенности хранения данных решать уже в этом классе. Равно как и метод нахождения определителя.
    Ответ написан
    Комментировать
  • Линковка Си библиотеки к С++ приложению. Как?

    risik
    @risik
    Программист
    Все, как посоветовал @Samuel_Leonardo, но, скорее всего, Вы подаете этот код С компилятору. С компилятор не знает про extern "C". О нем знает C++. Должно быть что-то вроде:
    #ifdef cplusplus
    extern "C"
    #endif
    int pi_dht_read(int type, int pin, float* temperature, float* humidity);


    или лучше:
    #ifdef cplusplus
    extern "C" {
    #endif
    
    int pi_dht_read(int type, int pin, float* temperature, float* humidity);
    
    #ifdef cplusplus
    }
    #endif
    Ответ написан
  • Когда осуществить переход с C++ на Objective-C?

    risik
    @risik
    Программист
    Если Вы выбрали такую стратегию, то ИМХО обязательные темы:
    • операторы
    • операции
    • массивы и указатели
    • строки
    • структуры/классы и объекты
    • наследование

    Необязательные темы:
    • перегрузка операций
    • шаблоны

    Желательные темы:
    • работа с динамической памятью
    • STL

    Шутка в том, что изучать STL без шаблонов и перегрузки операций проблематично.
    Ответ написан
    Комментировать
  • Изучение С/С++. Есть ли онлайн-ресурсы, аналогичные codecademy?

    risik
    @risik
    Программист
    За Stepic голосую. Очень неплохо. Есть некоторые шероховатости, но в целом весьма достойный курс. Однако, в отличие от codeacademy здесь начало курса по расписанию.

    Не такой веселый, но неплох. www.cppinstitute.org/?page_id=1558
    Ответ написан
    1 комментарий
  • Портабельный макрос для получения строки версии C++ компилятора и времени сборки приложения?

    risik
    @risik
    Программист
    Ничего сложного нет. Если не смотреть на исходный текст, как на что-то данное свыше. Например, можно все сделать по аналогии вот с этим: stackoverflow.com/questions/151299/embedding-svn-r...
    Ответ написан
  • Как компилировать файлы на сервере?

    risik
    @risik
    Программист
    По поводу ввода данных, на мой взгляд, удачное решение сделано в ideone.com
    то есть, пользователь сперва вводит все данные, которые ему придется ввести, а потом они передаются программе. Если же хотите, что пользователь вводил данные именно в тот момент, когда, например, программа выдала приглашение на их ввод, то придется поработать.
    Ответ написан
    Комментировать
  • В чем отличия C++ и C# ?

    risik
    @risik
    Программист
    1) идеологией. корневое отличие - управлением памятью.
    2) по синтаксису операций и операторов схожи.
    3) С C++ на C# можно. в обратную сторону сложнее, но тоже можно.
    4) Можно. но я рядом оговорок, см. в других комментариях.
    5) Если нужны оба, то начинать с C++, так как смотри ответ на вопрос 3.

    ИМХО лучше знать оба языка.
    Ответ написан
    Комментировать
  • Хороша ли NetBeans как IDE для C++?

    risik
    @risik
    Программист
    Для начинающих хороша. Для профессионального использования таки не рекомендую, так как косяки в ней есть и не мало. Например:
    - был у меня класс, при редактировании которого NetBeans намертво висла.
    - проект NetBeans построен на make. Это и достоинство (можно собрать на удаленном CI сервере прямо то, что сделал в IDE). Это же и недостаток, так как его можно легко сломать.

    Если Вы все таки под Windows, то, наверное, свежая VisualStudio попроще будет.

    Вообще, начинать можно с любой IDE. Когда поймете что Вам лично надо от IDE и чего Вам не хватает в Вашей IDE, тогда сможете сами выбрать, не слушая сторонних советов.

    Ну и я тоже жду релиза CLion это C++ IDE от JetBrains.
    Ответ написан
    Комментировать
  • Как в операторе [] правильно вернуть указатель на внутренний vector/map?

    risik
    @risik
    Программист
    Странно. Код правильный. А чем компилируете? Я на gcc 4.6.3 с опцией -std=c++98 прогнал. все работает как ожидается.
    Ответ написан
  • Важно ли знание английского языка в программировании?

    risik
    @risik
    Программист
    Про английский Вам уже ответили. и он нужен не для того, что бы осваивать язык программирования, а для того, чтобы:
    - читать спецификации
    - свободно читать документацию на используемые библиотеки/фреймоворки
    - искать ответы на форумах и т.д.
    Разговорный в данном случае, вторичен, но это не значит, что на него надо забивать.

    Java проще, у нее ниже уровень вхождения, по сравнению с C++. Но если все таки планируете в будущем программировать под iOS, Mac OS, то изучайте паралельно C. Лучше сперва без плюсов. Потом уже C++.
    Ответ написан
  • Как получить указатель на файл?

    risik
    @risik
    Программист
    В С++ рекомендуется использовать iostream (cin, cout, etc). Это совершенно другая библиотека, которая не имеет прямого отношения к stdio (FILE* etc). И, в общем случае, они никак не совместимы друг с другом.

    Однако, Вас никто не принуждает использовать iostream в Вашем С++ проекте. Используйте C++ + stdio. Проблема будет если Вам надо использовать две разных библиотеки, одна из которых принимает FILE *, а другая iostream, и Вам для чего-то нужно передать один и тот же файл из одной в другую.

    ктстаи, праивльнее использовать в С++
    Ответ написан
    1 комментарий
  • Какие есть системы сборки для C++ (не Cmake)?

    risik
    @risik
    Программист
    А что, по Вашему строгая логика?
    Ответ написан
    Комментировать
  • Насколько хорошо стоит изучить C++, чтобы легче было перейти к изучению Java?

    risik
    @risik
    Программист
    Вопрос не простой.

    Если Вы уверены, что Вам нужно изучить оба языка, в условиях недостатка времени, я бы на Вашем месте ограничился в С++ только самыми базовыми вещами: классы и объекты, инкапсуляция, наследование и полиморизм. Затем Java. А затем можно снова вернуться к C++ для более глубокого изучения.

    Только один пример.

    С одной стороны, есть такая тема в C++, которая Вам точно не нужна для изучения Java: "перегруженные операции". С другой стороны, было бы хорошо в C++, попользовать STL. А понять как он работает без знания перегруженных операций очень сложно. То есть, научится им пользоваться - можно. А понять как это работает, и, что еще более важно, понять текст сообщений об ошибках без хорошего понимания перегруженных операций (ну и еще и шаблонов) очень сложно. Таким образом, STL, boost и еще много что просто вылетает.

    Если же по предложенной мной схеме, то Вы после получения базовых знаний об ООП изучите Java и в том числе, научитесь пользоваться сложными типами данных, такими как словари, хеш-таблицы и т.д. А затем можно вернуться к C++ и будет чуть проще научиться пользоваться STL. И разумеется, Вам придется научиться перегружать операции.
    Ответ написан
    Комментировать
  • Как сделать что бы установщик увидел нужный путь?(или почему msvs 2013 Expr. for Windows Desktop не хочет устанавливаться в D:\)?

    risik
    @risik
    Программист
    > что делать:
    1. Прочитать сообщение
    2. Освободить место на диске

    Если прочитать сообщение, то становится ясно, что Вам не хватает места на дисках. Студия говорит, что ей надо 1.03ГБ на диске D: куда Вы ее и хотите установить и еще 4.38ГБ на диске C:, где, у Вас, скорее всего, установлена операционная система.
    Ответ написан