Size: a a a

2020 September 10

NP

Nikita Provotorov in pro.cxx
точнее как дампаете результат
источник

f

for(int c; (c = getc... in pro.cxx
Nikita Provotorov
точнее как дампаете результат
#include <vector>

int main() {
}


clang++ -E main.cpp > vector_lineinfo.cpp
источник

NP

Nikita Provotorov in pro.cxx
for(int c; (c = getchar()) != EOF;)
#include <vector>

int main() {
}


clang++ -E main.cpp > vector_lineinfo.cpp
знаете про существование например #ifdef?
источник

f

for(int c; (c = getc... in pro.cxx
Да, знаю. Это минимальный пример, только то что относится к вопросу.
источник

D

Danya in pro.cxx
for(int c; (c = getchar()) != EOF;)
При компиляции есть какие-нибудь неявно определенные символы которые влияют на то как проходит работа с системными заголовочными файлами?

Если сделать #include <vector> и дампнуть результат то он отличается от того что получается если вставить содержимое vector в код напрямую.
Есть
Называется Predefined macros, например
источник

D

Danya in pro.cxx
Как минимум
источник

f

for(int c; (c = getc... in pro.cxx
Это если через сам вектор. Если открыть /usr/include/c++/10.2.0/vector и полностью скопировать содержимое в main.cpp то получается разный выход.
источник

NP

Nikita Provotorov in pro.cxx
for(int c; (c = getchar()) != EOF;)
Да, знаю. Это минимальный пример, только то что относится к вопросу.
тогда вы должны понимать почему вставка содержимого хедера vector напрямую в код и дамп препроцессора различаются
источник

VS

Vlad Serebrennikov in pro.cxx
for(int c; (c = getchar()) != EOF;)
Это если через сам вектор. Если открыть /usr/include/c++/10.2.0/vector и полностью скопировать содержимое в main.cpp то получается разный выход.
потому что когда вы смотрите в исходники вектора, вы видите сырой код

а clang++ -E вам показывает код после как минимум четырех фаз трансляции согласно http://eel.is/c++draft/lex.phases
источник

VO

Vyacheslav Olkhovche... in pro.cxx
magras
Так в новых стандартах есть operator delete, который получает размер аллокации. Это позволяет строить более эффективные аллокаторы.
это утверждение требует строгого доказательства.
источник

m

magras in pro.cxx
Vyacheslav Olkhovchenkov
это утверждение требует строгого доказательства.
Вы же сами назвали причину: не нужно в метаданных хранить лишнюю информацию.
источник

VO

Vyacheslav Olkhovche... in pro.cxx
это не является доказательством того, что эффективность будет хоть сколько-то измеримо выше
источник

m

magras in pro.cxx
Vyacheslav Olkhovchenkov
это не является доказательством того, что эффективность будет хоть сколько-то измеримо выше
Очевидно, что эффективность использования памяти увеличится.

Ладно, не очевидно, потому что есть тоже самое выравнивание, но если у компилятора есть вся необходимая информация и она дает потенциал для улучшения, для меня этого достаточно.
источник

AN

Alexander N in pro.cxx
Сомнение берет меня. Есть ли смысл писать либу на плюсах, если её также предполагается юзать из скриптов через ffi или тупо LoadLibrary/dlopen. Но с другой стороны я хотел написать интерфейс на плюсах, единственное враппить его под C жесть
источник

D

Danya in pro.cxx
Alexander N
Сомнение берет меня. Есть ли смысл писать либу на плюсах, если её также предполагается юзать из скриптов через ffi или тупо LoadLibrary/dlopen. Но с другой стороны я хотел написать интерфейс на плюсах, единственное враппить его под C жесть
Насколько я знаю Intel Media SDK пишется на С++, но экспортится в Си
источник

ПК

Побитый Кирпич... in pro.cxx
Alexander N
Сомнение берет меня. Есть ли смысл писать либу на плюсах, если её также предполагается юзать из скриптов через ffi или тупо LoadLibrary/dlopen. Но с другой стороны я хотел написать интерфейс на плюсах, единственное враппить его под C жесть
Экспортишь на С любую дичь, а с другой стороны делаешь обёртку нормальную. Так всё и работает
источник

K

Konstantin in pro.cxx
Alexander N
Сомнение берет меня. Есть ли смысл писать либу на плюсах, если её также предполагается юзать из скриптов через ffi или тупо LoadLibrary/dlopen. Но с другой стороны я хотел написать интерфейс на плюсах, единственное враппить его под C жесть
По-моему, только так все и делают
источник
2020 September 11

LA

Liber Azerate in pro.cxx
Где лучше всего на данный момент поддерживаются модули? Я что-то пытался в вижаке попробовать с ними, однако собрался разве самый минимум, с import std.core. Красиво, конечно, однако когда я пытался сделать свой модуль, хотя бы банально просто сделать пустой модуль... Во-первых, module всё время воспринимался вижаком как идентификатор... Или ещё %список_ошибок%, а также импортировать этот модуль тоже не получилось – не находился. Вижак по умолчанию пока не подхватывает модули? Я видел кучу примеров в доках, такое впечатление, что они должны были бы компилироваться. Или предполагается пока вручную через cl? В общем, не пойму что-то
источник

AK

Andrei K in pro.cxx
latest включен?
источник

I

Ivan in pro.cxx
Alexander N
Сомнение берет меня. Есть ли смысл писать либу на плюсах, если её также предполагается юзать из скриптов через ffi или тупо LoadLibrary/dlopen. Но с другой стороны я хотел написать интерфейс на плюсах, единственное враппить его под C жесть
Можно написать на плюсах нутро, завернуть в интерфейс на C, положив все в либу, а потом написать враппер на плюсах сишного интерфейса и поставлять вместе его вместе с либой в виде сорс файлов 😁 Такая матрёха получается CXX(C(CXX))
источник