LINUX.ORG.RU

[CPP] строка в #include


0

0

Помогите, пожалуйста, хочется сделать быстро, нагуглить не получается, а сам туплю чего-то и времени в обрез. Есть несколько строк в коде, вроде этих:

// ...code... #include «bubu/baba/data123/fileA.inc» // ...code #include «bubu/baba/data123/fileB.inc» //...code... #include «bubu/baba/data123/fileZ.inc» //...

иногда нужно изменить data123 на data1234. как вынести это место отдельно во что-то вроде #define data «data123»

чтобы потом сделать

#include «bubu/baba##data##/fileA.inc и тд.

Уфф, надеюсь я ясно выразился.

anonymous

1. post question
2 ???
3. FORMAT

Помогите, пожалуйста, хочется сделать быстро, нагуглить не получается, а сам туплю чего-то и времени в обрез. Есть несколько строк в коде, вроде этих:

// ...code...
#include "bubu/baba/data123/fileA.inc"
// ...code
#include "bubu/baba/data123/fileB.inc"
//...code...
#include "bubu/baba/data123/fileZ.inc"
//...

иногда нужно изменить data123 на data1234. как вынести это место отдельно во что-то вроде
#define data "data123"

чтобы потом сделать

#include "bubu/baba##data##/fileA.inc и тд.

Уфф, надеюсь я ясно выразился.

anonymous
()
Ответ на: комментарий от anonymous

средствами cpp - думаю никак. напиши внешний скрипт, который генерит файл c нужными инклудами и строчками кода. имхо, это будет быстрее.

generatorglukoff ★★
()
Ответ на: комментарий от anonymous

А ## (token pasting) - работает только в директиве #define и не умеет склеивать строчки. Поэтому дефайнить нужно имя хедера целиком.
Можно еще так:

#define AAA my_inc.h
#define BBB dir
#define CCC(a) #a
#define DDD(a) CCC(a)
#include DDD(BBB/AAA)
==> #include "dir/my_inc.h"

anonymous
()

Если вариантов data немного то #ifdef, если много то sed '/#define/ s/data/data123/' -i myfile.cpp

ilya_ost
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.