Ни нада больше.
Керигану с Ричей надо яйцы оторвать...
> Керигану с Ричей надо яйцы оторвать...Видать, у Павлинукса галоперидол закончился. :))))
>> Керигану с Ричей надо яйцы оторвать...
> Видать, у Павлинукса галоперидол закончился. :))))Никакую Галю я не пердолил.
---
Хотя, для разминки мозга можете рассказать как из одной структуры,
но в разных версиях пакета, поставить нужные члены этой структуры.Например
struct sex {
char *girl;
char *boy;}
#if ORIENTATION == 666
#define SELECT_HOLE(target) sex##.boy
#else
#define SELECT_HOLE(target) sex##.girl
#endifВызываем
char *fucka = SELECT_HOLE(target);
Вы выливается с ошибкой, что не понимает он token concatenation with "seх" and "."
>[оверквотинг удален]
> }
> #if ORIENTATION == 666
> #define SELECT_HOLE(target) sex##.boy
> #else
> #define SELECT_HOLE(target) sex##.girl
> #endif
> Вызываем
> char *fucka = SELECT_HOLE(target);
> Вы выливается с ошибкой, что не понимает он token concatenation with "seх"
> and "."sex у вас не тот :-)
это метка структуры, а не переменная
>[оверквотинг удален]
>> #define SELECT_HOLE(target) sex##.boy
>> #else
>> #define SELECT_HOLE(target) sex##.girl
>> #endif
>> Вызываем
>> char *fucka = SELECT_HOLE(target);
>> Вы выливается с ошибкой, что не понимает он token concatenation with "seх"
>> and "."
> sex у вас не тот :-)
> это метка структуры, а не переменнаяВот, примерно так...
struct sex {
char *boy;
char *girl;
};#if ALPHA == 1
struct who
{
struct sex people;
};
#else
struct who
{
char *people;
};
#endif#if ALPHA == 1
#define SELECT_HOLE(target) target##.girl
#else
#define SELECT_HOLE(target) target
#endif
int main(void)
{
struct who fuck;char *fucka = SELECT_HOLE(fuck.people)
// Или аналог внутри функции
/*
#if ALPHA == 1
char *fucka = fuck.people.girl;
#else
char *fucka = fuck.people;
#endif
*/return 0;
}Компилим...
$ gcc -D ALPHA=1 test.c
test.c: In function 'main':
test.c:31:1: error: pasting "." and "." does not give a valid preprocessing token
test.c:31:16: error: expected identifier before '.' tokenДелал варианты
target##.girl
target.##.girl
target.##girl
target##.##girl---
Угадайте, что должно быть вместо '##' ?
> Угадайте, что должно быть вместо '##' ?Мне кажется или там просто должно быть (target).girl ?
>> Угадайте, что должно быть вместо '##' ?
> Мне кажется или там просто должно быть (target).girl ?Что надо подставить вместо ##, в этом макросе:
#define SELECT_HOLE(target) target##.girl
чтоб вместо:
char *fucka = SELECT_HOLE(fuck.people);
получилось:
char *fucka = fuck.people.girl;
варианты могут быть такимиtarget##.girl
target.##.girl
target.##girl
target##.##girl
>>> Угадайте, что должно быть вместо '##' ?
>> Мне кажется или там просто должно быть (target).girl ?
> Что надо подставить вместо ##, в этом макросе:
> #define SELECT_HOLE(target) target##.girl
> чтоб вместо:
> char *fucka = SELECT_HOLE(fuck.people);
> получилось:
> char *fucka = fuck.people.girl;
> варианты могут быть такимиа ## тут вообще не нужен
он для конкатенации аргументов макроса, а у вас он только одинсделайте просто:
#define SELECT_HOLE(target) target.girl
>[оверквотинг удален]
>> #define SELECT_HOLE(target) target##.girl
>> чтоб вместо:
>> char *fucka = SELECT_HOLE(fuck.people);
>> получилось:
>> char *fucka = fuck.people.girl;
>> варианты могут быть такими
> а ## тут вообще не нужен
> он для конкатенации аргументов макроса, а у вас он только один
> сделайте просто:
> #define SELECT_HOLE(target) target.girlЯ код не помню, но это там точно не прокатывало
Может так было
#define SELECT_HOLE(target) some.##target##.girl
> Никакую Галю я не пердолил.Уффф. Ну слава Богу - ты еще не потерян для общества.
> Вы выливается с ошибкой, что не понимает он token concatenation with "seх"
> and "."Я выливается? Я никуда не выливается.