Сообщество - Лига программистов C/C++
Добавить пост
50 постов 4 498 подписчиков

Популярные теги в сообществе:

5

С++ Книги Для Начинающего Программиста

Здравствуйте уважаемые программисты, хочу задать вопрос на тему какую книгу по программированию начать изучать первой.

Во многих источника есть списки топ книг для изучения, но не в одном из источников не указываются  недостатки книги, а в связи с этим о объективности речи не идет.

Вопрос насущный заключается в том, какую книгу вы посоветуете имея уже свой опыт в изучении и почему именно, какие в ней минусы и плюсы?

Для лиги тупости пост... Не пучается makefile

Туплю второй день, стыдно даже публиковать под своим именем )


Нужно собрать мелкий проект под mingw (gcc.exe (MinGW.org GCC Build-2) 9.2.0), подключив билиотеку  libGFL версии 3.40 (от разрабов XnView, последняя версия, и уже не разрабатывается - но для моей мелкой задачи  её вполне хватает). Библиотека libgfl.lib находится в той же директории, что и сам компилируемый исходник.


Проблема возникает на этапе линковки.

Если тупо задать сборку из командной строки

gcc -opicinfo.exe picinfo.cpp -L . -lgfl
Все молча собирается.

А вот если все то же самое, но в два этапа, и через мэйкфайл - то результат несколько иной.


Ниже мэйкфайл с удаленными комментариями и пустыми строками (небходимые по спецификации табуляции, не переносятся в пост, поэтому заменены пробелами):

OBJS = picinfo.o
CFLAGS=
LFLAGS= -L . -lgfl
all: picinfo.exe
picinfo.exe: $(OBJS)
  g++ -o $@ $(LFLAGS) $^
%.o: %.cpp
g++ $(CFLAGS) -c $<
picinfo.o: picinfo.cpp

То почему-то на выходе получается куча неразрешенных ссылок на функции:


C:\Projects\Picinfo>make
g++ -c picinfo.cpp
g++ -o picinfo.exe -L. -lgfl picinfo.o
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x7): undefined reference to `gflLibraryExit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0xca): undefined reference to `gflGetDefaultLoadParams@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x107): undefined reference to `gflLoadBitmap@16'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x12f): undefined reference to `gflGetErrorString@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x359): undefined reference to `gflBitmapHasEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x37f): undefined reference to `gflBitmapGetEXIF@8'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ca): undefined reference to `gflFreeEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4db): undefined reference to `gflFreeFileInformation@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ec): undefined reference to `gflFreeBitmap@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x566): undefined reference to `gflSetPluginsPathname@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x56e): undefined reference to `gflLibraryInit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x5a8): undefined reference to `gflEnableLZW@4'
collect2.exe: error: ld returned 1 exit status
makefile:10: recipe for target 'picinfo.exe' failed
make: *** [picinfo.exe] Error 1

Отчего проиходит такая печаль - ума не приложу... Что скажут аксакалы?

Показать полностью
8

Мобильная 1С и внешние компоненты

Очень надеюсь, что здесь есть люди, которые делают/сделали компоненты для мобильного приложения/клиента 1С.

Хочу сделать компоненту для мобильного приложения (Android), но не понимаю как её собрать. Пишу на C++. DLL получается и всё круто, а SO, для ARM/ARM64, при подключении на мобилке вылетает. Причем и моя, и с ИТС. И как отладить не понимаю. Собирал через Visual Studio. Тестил на своем телефоне (ARM64) и на ТСД (ARM). В процессе гугления нашёл ещё способы:
1. Собрать под Linux и, вроде как, оно будет работать
2. Собрать SO в Android Studio

Но тут уже не хватает знаний как и что делать и по итогу просто запутался. И спросить совсем не у кого(

Прошу подсказать, скинуть какой-нибудь материал для подсказки, мини-инструкцию, пример или хоть как-нибудь помочь

P.S. Пишу на Пикабу уже от отчаяния, ибо три дня гугления ничего не дают. Естественно без рейтинга

If() {} else {} unknow{} или троичная логика

Как-то давно пришла идея добавить троичную логику в c++ - добавить одно слово unknow в синтаксис языка и тип данных который принимает три значения - true, false, unknow.

Логические операции &&, ||, ! легко обрабатываются - https://ru.wikipedia.org/wiki/Троичная_логика

Такое вообще возможно?

Если абстрагироваться, то по одному проводу ток может течь в одну сторону, другую сторону или не быть тока) То есть можно теоретически и аппаратно реализовать

https://ru.wikipedia.org/wiki/Троичный_триггер


P.S. https://ru.wikipedia.org/wiki/Троичный_компьютер

460

SkittishBirds

Последнее время,

SkittishBirds Игры, Программирование, C++, Гифка

Друзья, как лучше сделать данное чудо на плюсах.
- формируем массив координат
- заполняем массив деревьями
- заполняем случайным образом птицами

- вертим массив вокруг собаки (?)

32

С++ с нуля

Сестра подарила 3 таких книги. Как думаете, я пойму хоть что-то, или после прочтения меня в дурку увезут?

С++ с нуля C++, Самообразование

Есть тут программисты на C? Что делает этот код?

Здравствуйте. Можете по строчкам расписать для совсем начинающих программистов, что за магия тут происходит? Спасибо.

char* strncat(char* dest, const char* src, size_t n) {

char* ret = dest;

while (*dest) dest++;

while (n--)

if (!(*dest++ = *src++)) return ret;

*dest = 0;

return ret;

}


char* strchr(const char* str, int c) {

while (*str != (char)c)

if (!*str++) return 0;

return (char*)str;

}


char* strcat(char* dest, const char* src) {

char* ret = dest;

while (*dest) dest++;

while (*dest++ = *src++)

;

return ret;

}

Показать полностью
11

Сортировка пузырьком или самая легкая сортировка

В данном блоге я рассмотрю самою простую сортировку, которая поможет вам понять как работают сортировки.

- Почему метод называется методом пузырьком?
- Потому что легкие элементы (наименьшие) как-бы всплывают (прижимаются к левому краю списка), а тяжелые (самые большие) как-бы оседают на дно (прижимаются к правому краю списка). Таким способ массив и сортируется, так как самые элементы будут сортироваться в порядке возрастания: от самых легких, до самых тяжелых.
Что нам понадобиться для написания сортировки пузырьком:
- Умение писать циклы
- умение свопать (переставлять местами) элементы
- Массив

Код на C++:

https://gist.github.com/l-arkadiy-l/6662668989adcf579e21aeee14d04da3


Код на Python:

https://gist.github.com/l-arkadiy-l/41dfa4a9ae96f6821512e13f64e65a25


У вас может возникнуть логичный вопрос: А почему второй for идет от i до N — i — 1?

А потому что мы за каждую итерацию вложенного фора прижимаем наибольший элемент в массиве [0, N — i — 1], сейчас поясню: В первой итерации мы рассматриваем весь массив, от 0 до N — 1. До N — 1, потому что массив нумеруется с 0 и до N — 1.


Так вот:
- Первая итерация: прижимаем к правому краю max(arr[0, N — 1])
- Вторая итерация: прижимаем к правому краю max(arr[0, N — 2])
- Третья итерация: прижимаем к правому краю max(arr[0, N — 3])
- Четвертая итерация: прижимаем к правому краю max(arr[0, N — 4])
- и так далее...

В завершении блога хочу сказать, что этот алгоритм работает за квадрат O(n * n) — это медленно, так что в следующих блогах я рассмотрю более быстрые алгоритмы для сортировки.



Я на codeforces: https://codeforces.com/profile/Fin_ger

Показать полностью
Отличная работа, все прочитано!