LINUX.ORG.RU

Сообщения rumgot

 

VxWorks memPartAlloc: block too big

Добрый день. Имеется система VxWorks 6.8 и ее Ide Workbench. Есть проект. Проект собирается в качестве Downloadable Kernel Module. И при запуске получается вот такая ошибка:

memPartAlloc: block too big ...
Я понимаю, что в процессе работы моего кода, было выделено памяти больше чем позволено по дефолту. Так вот помогите пожалуйста настроить это допустимое количество памяти, куда тут смотреть? Имею ввиду конечно опции проекта в Workbench.

 , vxworks

rumgot
()

C++ классы, friend функции, подскажите место в стандарте

Добрый день.
Подскажите место в стандарте, где разъясняется следующее поведение:

#include <iostream>

using namespace std;

class A {
    int i_ = 555;

    friend void f0(A& a) { 
        cout << a.i_ << endl; 
    }

    friend void f1() {
        A a;
        cout << a.i_ << endl;
    }
};

// Если не указать эту строку, 
// то дальнейший вызов f1() не удастся
void f1();

int main() {
    A a;

    f0(a);

    // Здесь будет ошибка, если выше
    // нет объявления f1() вне класса
    f1();  

    return 0;
}
Где в стандарте написано, что в данном случае для f0 достаточно объявления в классе, а для f1 нет? Заранее спасибо.

UPD0
Нашел ответ.
В книге Язык программирования C++ Специальное издание (Бьерн Страуструп)
11.5.1. Поиск друзей
...

Дружественная функция может явно объявляться таким же образом, что и дружественный класс; или же ее можно искать по типу аргументов (§8.2.6) даже в случае, когда она объявлена вовсе не в самой близкой из охватывающих областей видимости.
Например:

void f(Matrix& m) {
    invert(m); // invert() - друг класса Matrix
}
Итак, дружественная классу функция или объявляется в непосредственно охватывающей области видимости, или имеет аргумент типа класса (или производного от него класса) (§13.6), или вообще не может быть найдена.
...

8.2.6. Поиск имен
Чаще всего функция с аргументом типа Т определяется в том же пространстве имен, что и тип Т. Поэтому, если функцию не удается найти в контексте, где она используется, поиск продолжается в пространстве имен ее аргументов.
Например:
namespace Chrono {
    class Date{ /*...*/};
    boot operator==(const Date&, const std::string&);
    std::string format(const Date&); // выдать строковое представление
    // ...
}

void f(Chrono::Date d, int i) {
    std::string s = format(d); // Chrono::format()
    std::string t = format(i); // error: нет format() в области видимости
}

 , friend, standart,

rumgot
()

clang-format c++ разрешить пробелы перед скобками в функциях преобразования

Добрый день.
Есть конструкции в объявлении шаблонного класса:

friend std::ostream &operator<< <>(std::ostream &os, const Point<T> &point);
friend bool operator== <>(const Point<T> &point, const Point<T> &otherPoint);
friend bool operator< <>(const Point<T> &point, const Point<T> &otherPoint);
При проходе этого clang-format-ом получается не очень красиво:

friend std::ostream &operator<<<>(std::ostream &os, const Point<T> &point);
friend bool operator==<>(const Point<T> &point, const Point<T> &otherPoint);

// А эта строка вдобавок не компилируется
friend bool operator<<>(const Point<T> &point, const Point<T> &otherPoint);

Как бы сказать clang-format-у, чтобы он не удалял данные пробелы?
Заранее спасибо.

UPD0
Пока на ум приходят только

// clang-format off
// ...
// clang-format on

UPD1 Отправил bug report https://bugs.llvm.org/show_bug.cgi?id=42381

 , ,

rumgot
()

Уровни C++ разработчика

Добрый день. Вот попалась на глаза таблица с описанием необходимых навыков C++ разработчика https://i.postimg.cc/L47jp2pY/2-5452047437050938576-page-001.jpg. Огласите ваше мнение пожалуйста.

 

rumgot
()

C++ вызов метода объекта в выражении с конструктором

Добрый день.
Подскажите пожалуйста момент.
Можно в C++ вызывать метод объекта сразу при создании:


class SomeClass {
public:
    int someMember() { return 0; }
};

int main() {

int i = SomeClass().someMember();

return 0;

}

Я так никогда не делал, т.к. считал, что это не по фэншую. Но вот иногда встречается в библиотеках эта форма (например в OpenCV есть).
Как вы к такому относитесь? И укажите пожалуйста, если в курсе, в стандарте такая форма где-то упомянается?

 ,

rumgot
()

ПО для геометрических вычислений

Добрый день.
Посоветуйте пожалуйста ПО для геометрических вычислений.
Конкретно нужно:
- Нарисовать отрезок/прямую/многоугольник/окружность/точку.
- Получить точки пересечения прямых/отрезков/многоугольников/окружностей.
- Иметь возможность сохранить координаты точек многоугольников и остальных фигур в простом текстовом формате.

 , ,

rumgot
()

Паттерн наблюдатель - Менеджер изменений

Добрый день.
В книге Приемы объектно-ориентированного проектирования. Паттерны проектирования от Банды четырех в главе о Наблюдателе обсуждается так называемый менеджер изменений (ChangeManager), применяемый для инкапсуляции сложной семантики обновления. А также реализация основанная на ациклическом направленном графе зависимостей между субъектами и их наблюдателями (DAGChangeManager).
0) В начале описания менеджера изменений пишется, что если некоторая операция влечет за собой изменения в нескольких независимых субъектах, то нужно, чтобы наблюдатели уведомлялись после того, как будут модифицированы ВСЕ субъекты, дабы не уведомлять одного и того же наблюдателя несколько раз. Почему именно так? Ведь если субъекты независимы, то логично при изменениях в некотором субъекте СРАЗУ уведомить соответствующих наблюдателей. И почему тут говорится НЕ УВЕДОМЛЯТЬ НЕСКОЛЬКО РАЗ ? Ведь за один вызов уведомляющей функции наблюдателю передается информация об изменении одного субъекта, соответственно, для того, чтобы уведомить его об изменениях в нескольких субъектах, нужно вызвать уведомляющую функцию, соответствующую каждому субъекту. Соответственно в любом случае будет столько вызовов уведомляющей функции, сколько субъектов изменилось для каждого наблюдателя.
1) В описании говорится, что если у одного наблюдателя несколько субъектов, то плохо, когда изменения сразу у нескольких субъектов, ведь тогда наблюдатель получит избыток уведомлений. Но почему избыток? Ведь логично, что от каждого субъекта будет по одному уведомлению для каждого субъекта? И далее пишется, что DAGChangeManager гарантирует, что наблюдатель получит только одно уведомление. Опять-таки какого хрена? Ведь нужно, чтобы наблюдатель получил уведомление от каждого субъекта, у которого зарегистрирован.
2) Можете более подробно описать работу DAGChangeManager?

 

rumgot
()

C++ RVO NRVO где в стандарте

Добрый день. Ребят прошу прощения за наглость. Подскажите пожалуйста, где в стандарте написано про оптимизацию RVO и NRVO?

 ,

rumgot
()

Кто пишет SRS, SDD?

Добрый день. Кто в ваших конторах (должность) пишет документы SRS(Software requirements specification), SDD(Software design description) и прочие? И второй вопрос: эти документы пишутся перед непосредственной разработкой, во время или после?

 , ,

rumgot
()

Необходимость Boost.Multiprecision

Добрый день.
Есть необходимость производить некоторое количество геометрических расчетов. Поиск точек пересечения, некоторые операции с векторами на плоскости и т.п. Так вот столкнулся с известными проблемами double (потеря точности). Как бы вы сделали, заморачивались бы с double самостоятельно или просто взяли бы готовую библиотеку, которая позволяет представлять числа с фиксированной точностью (Boost.Multiprecision)?

 , , , точность,

rumgot
()

Предложение добавить возможность вставлять SVG изображения

Добрый день всем.
Навеяно темой про emoji (Как вы относитесь к идее запрета emoji на форуме?).
Не знаю право, насколько есть польза от emoji.
Но вот хорошо было бы иметь возможность добавлять в сообщения изображения (хотя бы в SVG), чтобы при обсуждении некоторых вопросов графически изобразить вопрос или ответ (например схему сети или диаграмму классов и т.п.)
Как думаете?

 , , ,

rumgot
()

C++ кроссплатформенная библиотека для получения списка процессов и прочей инфы

Добрый день.
Есть ли какая-нибудь не очень большая кроссплатформенная (linux / windows) C++ (или C на худой конец) библиотека для получения списка процессов, получения объема используемой памяти, загрузки процессора по каждому процессу и по всей системе и другой сопутствующей информации?

 , , , ,

rumgot
()

Вызов переопределенного метода через объект производного класса

Собственно ответ нашел (https://stackoverflow.com/a/6319619).

struct Base
{
    virtual int Foo()
    {
        return -1;
    }
};

struct Derived : public Base
{
    virtual int Foo()
    {
        return -2;
    }
};

int main(int argc, char* argv[])
{
    Base *x = new Derived;

    ASSERT(-2 == x->Foo());

    //syntax is trippy but it works
    ASSERT(-1 == x->Base::Foo());

    return 0;
}

Но интересно, такая форма описана в каком-нибудь стандарте?

 , , , опп

rumgot
()

Libreoffice Writer особенности нумерации

Добрый день.
Нужно сделать вот что.
Документ
1-2 страницы без нумерации,
3-4 нумерация римскими цифрами начиная с I (т.е. I-II),
5 и далее нумерация арабскими цифрами начиная с 1 (т.е. 1,2,3,...,n)
Пока просто сделано отдельными документами ((1-2),(3-4),(5-n)), но это не солидно. Подскажите пожалуйста, как это сделать в одном документе.

 , , ,

rumgot
()

C++ виртуальные деструкторы (ну простите)

Добрый день. Тема поднималась хренову тучу раз, уж простите. Вопрос: объявляете ли вы деструкторы производных классов виртуальными? Я знаю, что не обязательно, что и так будет работать. Тут вопрос скорее такой: с точки зрения правил хорошего тона нужно ли это делать?

 , , ,

rumgot
()

PosgreSQL как хранить пользователей

Добрый день. Есть программа, она выполняет опрос некоторого железа и сохраняет результат опроса в базу данных PostgreSQL. Нужно наличие системы пользователей, т.е. запускает человек эту программу, выбирает свою фамилию, вводит пароль и работает, а результат сохраняется под его фамилией. Так вот. Как хранить пользователей? Делать в базе таблицу users с пользователями или на каждого пользователя заводить роль в PostgreSQL?

 , ,

rumgot
()

Ubuntu 18.04 nvidia optimus определить работает ли nvidia карта

Добрый день. Система kde.neon (на основе ubuntu 18.04) Как понять, что работает nvidia карта. Использую nvidia-prime. При выборе и intel и nvidia, glxgears показывает одинаковый результат ~60fps (если задавать vbalnk_mode=0 то примерно ~8000-9000fps и на intel и на nvidia).

 , , ,

rumgot
()

Сборка библиотеки Qt и приложения 32 битных версий

Добрый день. Есть необходимость собрать свое приложение 32 битной версии и соответственно и саму библиотеку Qt. На компьютере система 64 битная. Вопрос: хотя бы общая последовательность действий, как это сделать или это слишком трудоемко и лучше/надежней просто собрать все в 32 битной системе?

 , , , ,

rumgot
()

Qt QComboBox / QCalendarWidget блокирование событий мыши для остальных виджетов

Добрый день, когда есть открытое меню в QComboBox или когда открыто поле ввода года в QCalendarWidget, то нет реакции на клик по остальным виджетам, например по кнопкам QPushButton. Т.е. первый клик по остальным виджетам закрывает всплывающее меню QComboBox или прячет поле ввода года в случае QCalendarWidget, а уже дальнейшие клики по остальным виджетам работают нормально. Можно ли сделать так, чтобы на этот первый клик также была реакция у остальных виджетов?

 , , ,

rumgot
()

Qt определить иконку для *.desktop файла

Добрый день. Получаю объект класса QMimeType через метод mimeTypeForFile() класса QMimeDatabase. Затем получаю имя иконки через метод iconName() класса QMimeType. И для большинства файлов все нормально, а вот для всех *.desktop файлов получается одна иконка, независимо от того, что в нем прописано. Так вот как бы получить иконку из этого файла? Парсить его вручную?

 

rumgot
()

RSS подписка на новые темы