LINUX.ORG.RU

Не получается заинклюдить файл

 , ,


0

0

Если что, всё это собирается из-под деривации в nixos. В дебиане это всё работает. Почему не хочет в nixos - понятия не имею :)

echo "// shiftview.c" >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_bracketleft,  shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_bracketright, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_Left,  shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_Right, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"

Далее я подключаю инклюд в config.h

echo "// shiftview.c" >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_bracketleft,  shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_bracketright, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_Left,  shiftview, {-1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"
    echo '{ MODKEY,           XK_Right, shiftview, {1} },' >> "./$PATH_FINALIZER_OUT/$FILE_CFG_MY_BIND"

А самом файле

// shiftview.c
{ MODKEY,           XK_bracketleft,  shiftview, {-1} },
{ MODKEY,           XK_bracketright, shiftview, {1} },
{ MODKEY,           XK_Left,  shiftview, {-1} },
{ MODKEY,           XK_Right, shiftview, {1} },

В конфиге строки инклюда выглядят так:

static const Key keys[] = {
...
    TAGKEYS(                        XK_9,                                  8)
    #include "config_my_bind.h"
};

И получаю ошибку:

In file included from config.h:236,
                 from dwm.c:383:
config_my_bind.h:2:38: error: 'shiftview' undeclared here (not in a function)
    2 | { MODKEY,           XK_bracketleft,  shiftview, {-1} },
      |                                      ^~~~~~~~~
make: *** [Makefile:18: dwm.o] Error 1

Хотя, изначально в config.h были строки(я их закомментил) и dwm с этими строками нормально собирается. Т.е, если в самом конфиге config.h есть shiftview, то компилятор собирает код, а если вынести эти же строки в include, то нет

{ MODKEY|ShiftMask,             XK_Tab,        shiftview,              { .i = -1 } },
{ MODKEY|ShiftMask,             XK_backslash,  shiftview,              { .i = +1 } },
★★★★

Последнее исправление: bryak (всего исправлений: 1)

Далее я подключаю инклюд в config.h

А где? В приведённом коде только вызовы функции, самого инклюда нет. Нужно добавить выше:

#include "shiftview.c"
Bfgeshka ★★★★★
()