C / C++

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: C++

Непрочитанное сообщение Olej » 18 апр 2017, 20:13

Olej писал(а):
Olej писал(а): 3. Ну и интерактивный интерпретатор C++ (из того же проекта LLVM) - Cling - небезынтересен:
CLing
С++ интерпретатор Cling
(если это получит развитие)
CLing (в отличие от CLang) в репозитариях нет.
Но достаточно взять бинарную сборку на странице CERN: CERN PH-SFT Builds
Понадобился...
А его там нет :-o
Не простым поиском находится:
What is Cling
https://root.cern.ch/download/cling//

Код: Выделить всё

...
cling_2017-04-18_fedora24.tar.bz2	2017-04-18 14:58 	263M
cling_2017-04-18_fedora22.tar.bz2	2017-04-18 14:54 	264M
cling_2017-04-18_fedora21.tar.bz2	2017-04-18 14:54 	270M
cling_2017-04-18_docs.tar.bz2    	2017-04-18 15:16    13M
...
Похоже, что это CERN выкладывает сборки 3-х последних дней.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: C++

Непрочитанное сообщение Olej » 19 апр 2017, 12:12

Olej писал(а): Похоже, что это CERN выкладывает сборки 3-х последних дней.

Код: Выделить всё

[olej@dell bin]$ tar -jxvf cling_2017-04-18_fedora22.tar.bz2
cling_2017-04-18_fedora22/
cling_2017-04-18_fedora22/share/
cling_2017-04-18_fedora22/share/clang/
...
[olej@dell cling_2017-04-18_fedora22]$ cd bin
[olej@dell bin]$ 

Код: Выделить всё

[olej@dell bin]$ ./cling --version
0.4~dev

Код: Выделить всё

[olej@dell bin]$ ./cling

****************** CLING ******************
* Type C++ code and press enter to run it *
*             Type .q to exit             *
*******************************************
[cling]$ char symbol = '1';
[cling]$ symbol
(char) '1'
[cling]$ symbol + 5
(int) 54
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: C / C++

Непрочитанное сообщение Olej » 30 июл 2019, 13:07

Olej писал(а): 2. Наличие кроме g++ компилятора GCC под Linux компилятора Clang (из проекта LLVM), который очень и очень активно развивается...
И интерес даже не сколько в самом GCC/Clang, сколько в новой стандартной библиотеке C++ при Clang.
Clang может линковаться со стандартной библиотекой из GCC (опция -stdlib=libstdc++) и с новой библиотекой C++ (опция -stdlib=libc++),
Освежаем ... что там нового...
Debian 10 ... который неделя-две стал stable:

Код: Выделить всё

olej@ACER:/usr/bin$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

Код: Выделить всё

olej@ACER:/usr/bin$ sudo apt-get install clang
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  binfmt-support clang-7 lib32gcc1 lib32stdc++6 libc6-i386 libclang-common-7-dev libclang1-7 libncurses-dev libobjc-8-dev libobjc4 libomp-7-dev libomp5-7 libtinfo-dev
  llvm-7 llvm-7-dev llvm-7-runtime
Предлагаемые пакеты:
  clang-7-doc ncurses-doc libomp-7-doc llvm-7-doc
Следующие НОВЫЕ пакеты будут установлены:
  binfmt-support clang clang-7 lib32gcc1 lib32stdc++6 libc6-i386 libclang-common-7-dev libclang1-7 libncurses-dev libobjc-8-dev libobjc4 libomp-7-dev libomp5-7
  libtinfo-dev llvm-7 llvm-7-dev llvm-7-runtime
Обновлено 0 пакетов, установлено 17 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 47,5 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 305 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://deb.debian.org/debian buster/main amd64 binfmt-support amd64 2.2.0-2 [70,0 kB]
Пол:2 http://deb.debian.org/debian buster/main amd64 libobjc4 amd64 8.3.0-6 [50,3 kB]
Пол:3 http://deb.debian.org/debian buster/main amd64 libobjc-8-dev amd64 8.3.0-6 [226 kB]
Пол:4 http://deb.debian.org/debian buster/main amd64 libc6-i386 amd64 2.28-10 [2 872 kB]
Пол:5 http://deb.debian.org/debian buster/main amd64 lib32gcc1 amd64 1:8.3.0-6 [47,9 kB]
Пол:6 http://deb.debian.org/debian buster/main amd64 lib32stdc++6 amd64 8.3.0-6 [407 kB]
Пол:7 http://deb.debian.org/debian buster/main amd64 libclang-common-7-dev amd64 1:7.0.1-8 [3 154 kB]
Пол:8 http://deb.debian.org/debian buster/main amd64 libclang1-7 amd64 1:7.0.1-8 [5 993 kB]
Пол:9 http://deb.debian.org/debian buster/main amd64 clang-7 amd64 1:7.0.1-8 [7 891 kB]
Пол:10 http://deb.debian.org/debian buster/main amd64 clang amd64 1:7.0-47 [7 468 B]                                                                                      
Пол:11 http://deb.debian.org/debian buster/main amd64 libncurses-dev amd64 6.1+20181013-2 [333 kB]                                                                        
Пол:12 http://deb.debian.org/debian buster/main amd64 libomp5-7 amd64 1:7.0.1-8 [319 kB]                                                                                  
Пол:13 http://deb.debian.org/debian buster/main amd64 libomp-7-dev amd64 1:7.0.1-8 [57,6 kB]                                                                              
Пол:14 http://deb.debian.org/debian buster/main amd64 libtinfo-dev amd64 6.1+20181013-2 [932 B]                                                                           
Пол:15 http://deb.debian.org/debian buster/main amd64 llvm-7-runtime amd64 1:7.0.1-8 [190 kB]                                                                             
Пол:16 http://deb.debian.org/debian buster/main amd64 llvm-7 amd64 1:7.0.1-8 [4 553 kB]                                                                                   
Пол:17 http://deb.debian.org/debian buster/main amd64 llvm-7-dev amd64 1:7.0.1-8 [21,3 MB]                                                                                
Получено 47,5 MB за 14с (3 482 kB/s)                                                                                                                                      
Выбор ранее не выбранного пакета binfmt-support.
(Чтение базы данных … на данный момент установлено 406472 файла и каталога.)
Подготовка к распаковке …/00-binfmt-support_2.2.0-2_amd64.deb …
Распаковывается binfmt-support (2.2.0-2) …
Выбор ранее не выбранного пакета libobjc4:amd64.
Подготовка к распаковке …/01-libobjc4_8.3.0-6_amd64.deb …
Распаковывается libobjc4:amd64 (8.3.0-6) …
Выбор ранее не выбранного пакета libobjc-8-dev:amd64.
Подготовка к распаковке …/02-libobjc-8-dev_8.3.0-6_amd64.deb …
Распаковывается libobjc-8-dev:amd64 (8.3.0-6) …
Выбор ранее не выбранного пакета libc6-i386.
Подготовка к распаковке …/03-libc6-i386_2.28-10_amd64.deb …
Распаковывается libc6-i386 (2.28-10) …
Выбор ранее не выбранного пакета lib32gcc1.
Подготовка к распаковке …/04-lib32gcc1_1%3a8.3.0-6_amd64.deb …
Распаковывается lib32gcc1 (1:8.3.0-6) …
Выбор ранее не выбранного пакета lib32stdc++6.
Подготовка к распаковке …/05-lib32stdc++6_8.3.0-6_amd64.deb …
Распаковывается lib32stdc++6 (8.3.0-6) …
Выбор ранее не выбранного пакета libclang-common-7-dev.
Подготовка к распаковке …/06-libclang-common-7-dev_1%3a7.0.1-8_amd64.deb …
Распаковывается libclang-common-7-dev (1:7.0.1-8) …
Выбор ранее не выбранного пакета libclang1-7.
Подготовка к распаковке …/07-libclang1-7_1%3a7.0.1-8_amd64.deb …
Распаковывается libclang1-7 (1:7.0.1-8) …
Выбор ранее не выбранного пакета clang-7.
Подготовка к распаковке …/08-clang-7_1%3a7.0.1-8_amd64.deb …
Распаковывается clang-7 (1:7.0.1-8) …
Выбор ранее не выбранного пакета clang.
Подготовка к распаковке …/09-clang_1%3a7.0-47_amd64.deb …
Распаковывается clang (1:7.0-47) …
Выбор ранее не выбранного пакета libncurses-dev:amd64.
Подготовка к распаковке …/10-libncurses-dev_6.1+20181013-2_amd64.deb …
Распаковывается libncurses-dev:amd64 (6.1+20181013-2) …
Выбор ранее не выбранного пакета libomp5-7:amd64.
Подготовка к распаковке …/11-libomp5-7_1%3a7.0.1-8_amd64.deb …
Распаковывается libomp5-7:amd64 (1:7.0.1-8) …
Выбор ранее не выбранного пакета libomp-7-dev.
Подготовка к распаковке …/12-libomp-7-dev_1%3a7.0.1-8_amd64.deb …
Распаковывается libomp-7-dev (1:7.0.1-8) …
Выбор ранее не выбранного пакета libtinfo-dev:amd64.
Подготовка к распаковке …/13-libtinfo-dev_6.1+20181013-2_amd64.deb …
Распаковывается libtinfo-dev:amd64 (6.1+20181013-2) …
Выбор ранее не выбранного пакета llvm-7-runtime.
Подготовка к распаковке …/14-llvm-7-runtime_1%3a7.0.1-8_amd64.deb …
Распаковывается llvm-7-runtime (1:7.0.1-8) …
Выбор ранее не выбранного пакета llvm-7.
Подготовка к распаковке …/15-llvm-7_1%3a7.0.1-8_amd64.deb …
Распаковывается llvm-7 (1:7.0.1-8) …
Выбор ранее не выбранного пакета llvm-7-dev.
Подготовка к распаковке …/16-llvm-7-dev_1%3a7.0.1-8_amd64.deb …
Распаковывается llvm-7-dev (1:7.0.1-8) …
Настраивается пакет libncurses-dev:amd64 (6.1+20181013-2) …
Настраивается пакет libobjc4:amd64 (8.3.0-6) …
Настраивается пакет libobjc-8-dev:amd64 (8.3.0-6) …
Настраивается пакет libomp5-7:amd64 (1:7.0.1-8) …
Настраивается пакет binfmt-support (2.2.0-2) …
Created symlink /etc/systemd/system/multi-user.target.wants/binfmt-support.service → /lib/systemd/system/binfmt-support.service.
Настраивается пакет libc6-i386 (2.28-10) …
Настраивается пакет libclang1-7 (1:7.0.1-8) …
Настраивается пакет libtinfo-dev:amd64 (6.1+20181013-2) …
Настраивается пакет llvm-7-runtime (1:7.0.1-8) …
Настраивается пакет llvm-7 (1:7.0.1-8) …
Настраивается пакет lib32gcc1 (1:8.3.0-6) …
Настраивается пакет libomp-7-dev (1:7.0.1-8) …
Настраивается пакет lib32stdc++6 (8.3.0-6) …
Настраивается пакет libclang-common-7-dev (1:7.0.1-8) …
Настраивается пакет clang-7 (1:7.0.1-8) …
Настраивается пакет llvm-7-dev (1:7.0.1-8) …
Настраивается пакет clang (1:7.0-47) …
Обрабатываются триггеры для systemd (241-5) …
Обрабатываются триггеры для man-db (2.8.5-2) …
Обрабатываются триггеры для libc-bin (2.28-10) …

Код: Выделить всё

olej@ACER:/usr/bin$ clang --version
clang version 7.0.1-8 (tags/RELEASE_701/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: C / C++

Непрочитанное сообщение Olej » 30 июл 2019, 13:15

Ещё из (стандартизованных, по репозиторию) Linux инструментов C/C++:

Код: Выделить всё

olej@ACER:/usr/bin$ aptitude show ucpp
Пакет: ucpp                                      
Версия: 1.3.2-2+b1
Состояние: не установлен
Приоритет: необязательный
Раздел: interpreters
Сопровождающий: Debian LibreOffice Maintainers <debian-openoffice@lists.debian.org>
Архитектура: amd64
Размер в распакованном виде: 153 k
Зависит: libc6 (>= 2.14)
Описание: embeddable, quick and light C preprocessor
 A C preprocessor designed to be embeddable, quick, light and fully compliant to ISO Standard 9899:1999, aka ISO C99, or simply, C99.
Домашняя страница: http://http://code.google.com/p/ucpp/

Код: Выделить всё

olej@ACER:/usr/bin$ aptitude show mcpp
Пакет: mcpp                                      
Версия: 2.7.2-4+b2
Состояние: не установлен
Приоритет: необязательный
Раздел: devel
Сопровождающий: Kiyoshi Matsui <kmatsui@t3.rim.or.jp>
Архитектура: amd64
Размер в распакованном виде: 37,9 k
Зависит: libc6 (>= 2.2.5), libmcpp0
Предлагает: mcpp-doc
Описание: Alternative C/C++ preprocessor
 C/C++ preprocessor defines and expands macros and processes '#if', '#include' and some other directives. 
 
 mcpp is an alternative C/C++ preprocessor with the highest conformance. It supports multiple standards: K&R, ISO C90, ISO C99, and ISO C++98. mcpp is especially useful
 for debugging a source program which uses complicated macros and also useful for checking portability of a source. 
 
 Though mcpp could be built as a replacement of GCC's resident preprocessor or as a stand-alone program without using library build of mcpp, this package installs only a
 program named 'mcpp' which links shared library of mcpp and behaves independent from GCC.
Домашняя страница: http://mcpp.sourceforge.net/
Метки: devel::debugger, devel::interpreter, devel::lang:c, devel::library, implemented-in::c, interface::commandline, role::devel-lib, role::program,
       works-with::software:source

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: С++ в относительно новых стандартах

Непрочитанное сообщение Olej » 23 июн 2021, 09:19

Сегодня прилетело обновление gcc/g++:

Код: Выделить всё

olej@ACER:/var/log/apt$ tail -n 20 /var/log/apt/history.log | grep '2021-06-23  08:45:15' -A5 
Start-Date: 2021-06-23  08:45:15
Commandline: /usr/sbin/synaptic --hide-main-window --non-interactive --parent-window-id 90177563 -o Synaptic::closeZvt=true --set-selections-file /tmp/tmptkvixgkr
Requested-By: olej (1000)
Install: linux-image-5.4.0-77-generic:amd64 (5.4.0-77.86, automatic), linux-headers-5.4.0-77:amd64 (5.4.0-77.86, automatic), linux-modules-extra-5.4.0-77-generic:amd64 (5.4.0-77.86, automatic), linux-headers-5.4.0-77-generic:amd64 (5.4.0-77.86, automatic), linux-modules-5.4.0-77-generic:amd64 (5.4.0-77.86, automatic)
Upgrade: libstdc++-10-dev:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), linux-headers-generic:amd64 (5.4.0.74.77, 5.4.0.77.80), linux-libc-dev:amd64 (5.4.0-74.83, 5.4.0-77.86), g++-10:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), signal-desktop:amd64 (5.6.0, 5.6.1), gcc-10-base:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), linux-image-generic:amd64 (5.4.0.74.77, 5.4.0.77.80), libitm1:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libasan6:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libquadmath0:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libgcc-10-dev:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libtsan0:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libubsan1:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libgfortran5:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), liblsan0:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libgomp1:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libgcc-s1:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), cpp-10:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libatomic1:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libcc1-0:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), libstdc++6:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04), linux-generic:amd64 (5.4.0.74.77, 5.4.0.77.80), gcc-10:amd64 (10.2.0-5ubuntu1~20.04, 10.3.0-1ubuntu1~20.04)
End-Date: 2021-06-23  08:47:02
Это (GCC) очень существенные изменения, затрагивающие g++, libstd, хэдер-заголовки kernel и т.д. - так что есть смысл проследить что там происходит.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: C / C++

Непрочитанное сообщение Olej » 23 июн 2021, 09:55

Olej писал(а):
23 июн 2021, 09:19
Сегодня прилетело обновление gcc/g++:
Некоторый вопрос (для меня, может запамятовал?) состоит в том, что обновление прилетело - до версии 10.2.0, а дефаултная версия в системе:

Код: Выделить всё

olej@ACER:~$ gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
В системе (здесь) установлены 3 релиза:

Код: Выделить всё

olej@ACER:~$ apt search gcc | grep ^i | grep ' gcc'
i   gcc                                                                             - компилятор C от GNU
i   gcc-10                                                                          - компилятор C от GNU
i   gcc-10-base                                                                     - GCC, набор компиляторов GNU (основной пакет)
i   gcc-8                                                                           - компилятор C от GNU
i A gcc-8-base                                                                      - GCC, набор компиляторов GNU (основной пакет)
i   gcc-9                                                                           - компилятор C от GNU
i   gcc-9-base                                                                      - GCC, набор компиляторов GNU (основной пакет)

Но в системе нет выбора альтернативы стандартным для Linux образом:

Код: Выделить всё

olej@ACER:~$ update-alternatives --list gcc
update-alternatives: ошибка: нет альтернатив для gcc

olej@ACER:~$ update-alternatives --list g++
update-alternatives: ошибка: нет альтернатив для g++
И то же самое даст:

Код: Выделить всё

olej@ACER:~$ galternatives
...
Снимок экрана от 2021-06-23 09-11-46.png
Снимок экрана от 2021-06-23 09-11-46.png (47.18 КБ) 1004 просмотра
Достаточно понятно почему: потому что это затрагивает сами основы функционирования ОС Linux, согласованность с стандартной библиотеками libstdc и libstdc++6 (и др.), несоответствие которых разрушит всю работу системы.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

C / C++

Непрочитанное сообщение Olej » 28 ноя 2023, 23:18

photo_2023-11-28_22-16-53.jpg
photo_2023-11-28_22-16-53.jpg (39.52 КБ) 123 просмотра
Эта книга обобщает многолетний опыт сообщества C++ в применении функций C++11 и C++14 и поможет вам принимать эффективные и безопасные проектные решения, отражающие реальные экономические инженерные компромиссы в крупномасштабных и разнообразных средах разработки программного обеспечения. Авторы используют примеры, взятые из реальных баз кода, чтобы объективно проиллюстрировать каждый вывод и осветить ключевые проблемы. В каждой функции указаны разумные варианты использования, скрытые подводные камни и недостатки этой языковой функции.

Прочитав эту книгу, вы будете:
- Понимать, что делает каждая функция C++11/14 и где она работает лучше всего
- Понимать, как обойти подводные камни, мешающие показу, и раздражающие угловые случаи
- Знать, какие функции требуют дополнительного обучения, опыта и экспертной оценки
- Получите информацию для подготовки стандартов кодирования и руководств по стилю, соответствующих потребностям вашей организации
- Будьте готовы постепенно и разумно внедрять современный C++ в существующие базы кода
С++14, пожалуй, и не очень "современный" ... но C++17 и далее - это уже больше изыски выньДаунов :oops:

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей