2
#include <stdio.h>

#define QUOTE(str) #str
#define EXPAND_AND_QUOTE(str) QUOTE(str)
#define TEST one-of-a-linux

int main() {
  printf(EXPAND_AND_QUOTE(TEST)"\n");
}

私は得る:

1 の 1

それよりも

唯一無二の Linux

「linux」が「1」になることに注意してください。つまり、数字の 1 です。

4

4 に答える 4

3

明らかに#define linux 1どこかに(または-Dlinux=1)あります。

于 2012-01-12T15:23:04.623 に答える
3

私のLinuxボックスでは:

$ gcc -dM -E - < /dev/null | grep 'linux\|unix'
#define __unix__ 1
#define __linux 1
#define __unix 1
#define __linux__ 1
#define __gnu_linux__ 1
#define unix 1
#define linux 1
$

unixUNIX プラットフォームで 1という値が IOCCC エントリで使用されていることに注意してください。1987年「ベストワンライナー」受賞。

http://www.ioccc.org/years.html#1987_korn

コードは次のとおりです。

    main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
于 2012-01-12T15:31:55.240 に答える
1
#undef linux
#define TEST one-of-a-linux
于 2012-01-12T15:27:01.953 に答える
0

コードのどこかに#defineforがあります。以下はうまくいきます!linux1

#include <stdio.h>

#undef linux

#define QUOTE(str) #str
#define EXPAND_AND_QUOTE(str) QUOTE(str)
#define TEST one-of-a-linux

int main(void) 
{
    printf(EXPAND_AND_QUOTE(TEST)"\n");
    return 0;
}

出力:

/*
$ gcc mm.c 
$ ./a.out 
one-of-a-linux
$ 
*/

ノート:

#define TEST 1linux
#define TEST linux1

予想される答えを適切に出力します!

于 2012-01-12T15:33:50.147 に答える