nes
> Я хотел не либу а сорцы подключать.
в след. раз придумай путь по оригинальней, а то lib может уже не прокатить и догадаются. Что касается твоего запроса, то должно работать.
nes
> // где-то в настройках компулятира:
> #define SUPER_LIB_DIR "d:/dev/libs/superlib/"
>
> // где-то в сырцах:
> #include SUPER_LIB_DIR "common/data_reader.h"
Так стандартный C-way это прописать в настройках компилятора путь до d:/dev/libs, а в иклюде писать "superlib/common/data_reader.h".
Почему не хочется так же сделать?
#include "GL/gl.h"
#include "SDL/SDL.h"
База.
nes
> Можно ли как-то добиться такого поведения в крестах?
Если в тексте подряд два строковых литерала
"qwer" "asdf"
то компилятор должен это воспринимать как конкатенацию, то есть как
"qwerasdf"
Так что если ты в настройках определишь символ SUPER_LIB_DIR именно как строковой литерал, то есть вместе с кавычками, то в тексте
SUPER_LIB_DIR "common/data_reader.h"
должно восприниматься как конкатенированный литерал
"d:/dev/libs/superlib/common/data_reader.h"
Если не хочется определять символ с кавычками, то можно воспользоваться макросовским оператором #, который превращает параметр макроса в строковой литерал
Как по современному и быстро определять соседние узлы кубосфере разбиваемой по квадродереву?Внутри одного дерева где все узлы ориентированны одинаково по отношению к соседям это просто, непросто когда у нас 6 граней куба и нам надо определять соседей на разных гранях. Интуиция подсказываем наследовать соседей от вершины дерева и далее добавлять разбиения не предках, но таким образом мы может передавать только информацию о грани потенциального соседа потомка, но я не могу пока определить какой из двух узлов принадлежащих грани является соседом конкретного исследуемого узла. Кто нибудь может подсказать?
Хочу сделать нормальные швы на границах узлов разного уровня на ландшафтах планет, а то юбки отстой.
Ой блин, да просто хранить не одну грань соседа, а две грани его потенциальных потомков, элементарно же
Но если будут другие предложения звоните
Ghost2
Хаха спасибо, это как раз то решение к которому я пришёл постом выше, оно видимо самое очевидное
Ghost2
> https://gcc.gnu
> https://stackoverflow
аж олдскулы свело
Dmitry_Milk
Это первое что я попробовал, не работает, по крайней мере в Visual Studio.
Ghost2
Не работает, по крайней мере в Visual Studio.
Чатбот, помоги nes-у
#include <cstdio> #define INCLUDE_FILE(path, file) <path/file> #define MY_LIB_DIR d:/!temp #include INCLUDE_FILE( MY_LIB_DIR,foo/bar.hpp) int main( ) { printf( "%d\n", asd); }
У меня работает на всех компиляторах.
nes
> не работает
#define STRINGIFY(s) #s #define CAT_PATH(path1, path2) STRINGIFY(path1/path2) #define SUPERLIB(path) CAT_PATH(SUPER_LIB_DIR, path)
#include SUPERLIB(common/data_reader.h)
Только SUPER_LIB_DIR надо определять без кавычек
entryway
> INCLUDE_FILE
Вот, блин, я велосипедист :) ПРичем слово "велосипедист" - это краткое прилагательное с ударением на второе "е" :)
Dmitry_Milk
> > INCLUDE_FILE
> Вот, блин, я велосипедист
Обнаружил нюанс: в msvc и clang это работает
#include INCLUDE_FILE(MY_LIB_DIR, foo/bar.hpp)
А gcc хавает только без пробела после запятой
#include INCLUDE_FILE(MY_LIB_DIR,foo/bar.hpp)
Если обернуть STRINGIFY, то работает везде.
#define MY_LIB_DIR d:/!temp #define STRINGIFY(s) #s #define INCLUDE_FILE( path, file) STRINGIFY( path/file) #include INCLUDE_FILE( MY_LIB_DIR, foo/bar.hpp)
Спасибо, но я хотел примерно так:
#include LIB_PATH "Common/Types.h"
А без ковычек оно выглядит стремно )