• Как в С++ с помощью препроцессора посчитать и преобразовать в строку?

    coffeesmoke
    @coffeesmoke
    Выбирайте нужное
    #include <QtCore>
    #include <iostream>
    
    using namespace std;
    
    # define MULT(VAL1,VAL2) ((VAL1)*(VAL2))
    # define AS_STR(NUM_VAL) ( QString("")+#NUM_VAL )
    # define AS_STR_VAL(NUM_VAL) ( QString().sprintf("%d",NUM_VAL) )
    
    
    int main(int argc, char *argv[])
    {
      QCoreApplication a(argc, argv);
      int i = MULT(1+2,1+1+1);
      cout << "Variant 1: " << qPrintable(AS_STR(i)) << endl;
      cout << "Variant 2: " << qPrintable(AS_STR(MULT(1+2,1+1+1))) << endl;
      cout << "Variant 3: " << qPrintable(AS_STR_VAL(MULT(1+2,1+1+1))) << endl;
    
      return a.exec();
    }


    Результат (консоль):

    Variant 1: i
    Variant 2: MULT(1+2,1+1+1)
    Variant 3: 9
    Ответ написан
    Комментировать
  • Какие кодотрюки вы знаете?

    coffeesmoke
    @coffeesmoke
    Трюки с кодом — вещь забавная для самого программиста. Но если работаешь в команде или публикуешь исходники для всех, то на передний план необходимо выставить удобство чтения, как бы при этом не хотелось поумничать. Лучшее, что можно позволить — приведение указателей разного типа или memcpy(...). :)
    Ответ написан
    Комментировать