#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
而不是
one-of-a linux
请注意,"linux“变成了"1”,即数字1。
发布于 2012-01-12 23:23:05
很明显,在某个地方(或-Dlinux=1)存在#define linux 1。
发布于 2012-01-12 23:31:55
在我的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
$注意:在unix平台上,unix的值为1已在IOCCC项中使用。1987年“最佳单线”奖的获得者。
http://www.ioccc.org/years.html#1987_korn
代码是:
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}发布于 2012-01-12 23:27:02
#undef linux
#define TEST one-of-a-linuxhttps://stackoverflow.com/questions/8837469
复制相似问题