Size: a a a

2020 July 25

S

SeanWoo in supapro.cxx
Егор
изучать как всё работает на низком уровне, или что подразумевалось под этим ВСЕМ?
Читая чей-то код, мало чего поймешь, это самому тыкать надо
источник

D

Danya in supapro.cxx
Danya
Как в С# юзингом?
using var resource = new Resource();
источник

UT

Unknown T. in supapro.cxx
Егор
Можно это прописать https://cmake.org/cmake/help/v3.18/command/include_directories.html
и просто инклюдить по имени, можно
#include "../src/file.h"
то есть если у меня в cmake инклюдится эта директория, то в lib.cpp я могу делать просто #include "lib.h"? Как тогда линкер поймёт, если у меня есть разные lib.h в разных директориях
источник

IZ

Ilia Zviagin in supapro.cxx
Unknown T.
Всем привет. Пишу библиотеку, есть директория include с хедерами и src с реализацией. В cpp файлах мне ведь нужно заинклюдить хедер. Как обратиться к хедеру, который лежит в "параллельной" директории?
В #include ты можешь прописать файл с относительным путем, либо ты можешь при сборке добавить параметр -I
источник

IZ

Ilia Zviagin in supapro.cxx
AlI Sergazy
а где почитать?
Таненбаум, Рихтер...
источник

Е

Егор in supapro.cxx
Unknown T.
то есть если у меня в cmake инклюдится эта директория, то в lib.cpp я могу делать просто #include "lib.h"? Как тогда линкер поймёт, если у меня есть разные lib.h в разных директориях
два файла с одинаковыми названиями и разным содержанием? А инклюд гварды не поломаются?
источник

DB

Dimmu Borgir in supapro.cxx
https://pastebin.com/khPrh9XK ребята посмотрите пож) на сколько правильно составил код?
источник

IZ

Ilia Zviagin in supapro.cxx
Danya
Как в С# юзингом?
Да ну, ты понял все давно, не притворяйся.
источник

Е

Егор in supapro.cxx
public:
   string m_username = "";
   string m_login = "";
   string m_password = "";

переделывай
источник

UT

Unknown T. in supapro.cxx
Егор
два файла с одинаковыми названиями и разным содержанием? А инклюд гварды не поломаются?
ну я просто понять хочу, как это работает. Например, есть include/module-1/lib.h и include/module-2/lib.h, содержание у них разное
источник

IZ

Ilia Zviagin in supapro.cxx
Unknown T.
то есть если у меня в cmake инклюдится эта директория, то в lib.cpp я могу делать просто #include "lib.h"? Как тогда линкер поймёт, если у меня есть разные lib.h в разных директориях
Да
источник

D

Danya in supapro.cxx
Ilia Zviagin
Да ну, ты понял все давно, не притворяйся.
Я просто не понимаю какие преимущества от того, что это будет явно
источник

DB

Dimmu Borgir in supapro.cxx
Егор
public:
   string m_username = "";
   string m_login = "";
   string m_password = "";

переделывай
инициализацию в конструкторе всегда сделать?
источник

IZ

Ilia Zviagin in supapro.cxx
Unknown T.
то есть если у меня в cmake инклюдится эта директория, то в lib.cpp я могу делать просто #include "lib.h"? Как тогда линкер поймёт, если у меня есть разные lib.h в разных директориях
Разные хедеры с одним именем - это плохо, компилятор будет их путать...
источник

Е

Егор in supapro.cxx
Unknown T.
ну я просто понять хочу, как это работает. Например, есть include/module-1/lib.h и include/module-2/lib.h, содержание у них разное
Я не знаю, наверное ошибку даст, а может или какой-то из них выберет, а второй видеть не будет
Тут вот ошибку линковки выдает https://stackoverflow.com/questions/9351132/two-files-of-the-same-name-give-linker-error-in-visual-studio
источник

UT

Unknown T. in supapro.cxx
окей, то есть можно сказать, что все хедеры при компиляции помещаются в одно место. спасибо! А где вообще можно конкретно почитать, как происходит этот процесс сборки хедеров, работы cmake и так далее
источник

Е

Егор in supapro.cxx
Unknown T.
окей, то есть можно сказать, что все хедеры при компиляции помещаются в одно место. спасибо! А где вообще можно конкретно почитать, как происходит этот процесс сборки хедеров, работы cmake и так далее
хедеры никуда не перемещаются, include_directories добавляет пути к путям компилятора, чтобы он знал где твои файлы искать
источник

IZ

Ilia Zviagin in supapro.cxx
Unknown T.
ну я просто понять хочу, как это работает. Например, есть include/module-1/lib.h и include/module-2/lib.h, содержание у них разное
Либо ты про очереди компилируешь разные исходные модули, используя только один из заголовков, либо придется использовать относительные пути к заголовками, либо придется их переименовать.
источник

DB

Dimmu Borgir in supapro.cxx
Unknown T.
окей, то есть можно сказать, что все хедеры при компиляции помещаются в одно место. спасибо! А где вообще можно конкретно почитать, как происходит этот процесс сборки хедеров, работы cmake и так далее
при линковки да. линковка и компиляция разные вещи
источник

UT

Unknown T. in supapro.cxx
Ilia Zviagin
Либо ты про очереди компилируешь разные исходные модули, используя только один из заголовков, либо придется использовать относительные пути к заголовками, либо придется их переименовать.
То есть в том примере, нужно использовать #include "module-1/lib.h"
источник