pyPortMidi является оберткой Python PortMidi, который описан как "межплатформенная библиотека C для управления MIDI в реальном времени". Я не использовал его сам, но это выглядит очень перспективным. Явное упоминание о способности представить данные MIDI, в реальном времени.
Да. Любой компилятор может встраивать любую функцию, когда считает, что это хорошая идея. GCC делает то же самое.
На уровне оптимизации -O2
встраивание выполняется, когда компилятор считает, что это стоит делать (используется эвристика) и , если не увеличивается размер кода. В -O3
это делается всякий раз, когда компилятор считает, что это стоит делать, независимо от того, увеличит ли он размер кода. Кроме того, на всех уровнях оптимизации (то есть при включенной оптимизации) статические функции, которые вызываются только один раз, встроены.
Как отмечено в комментариях ниже, эти -Ox
фактически являются составными настройками, которые охватывают несколько более конкретные настройки, в том числе связанные с встраиванием (например, -finline-functions
и т. д.),
Да, особенно если у вас включен высокий уровень оптимизации.
Есть флаг, который вы можете предоставить компилятору, чтобы отключить это: -fno-inline-functions.
Если вы используете '-finline-functions' или '-O3', он будет встроенными функциями. Вы также можете использовать '-finline_limit = N', чтобы настроить объем встраивания.
Да, это так, хотя оно также будет генерировать не- встроенное тело функции для не- статических
не- встроенных
функций, поскольку это необходимо для вызовов из других блоков перевода.
Для встроенных
функций это ошибка из-за невозможности предоставить тело функции, если функция используется в какой-либо конкретной единице перевода, поэтому это не проблема.