在C中定义标点符号的替换

时间:2016-11-14 07:57:32

标签: c c-preprocessor

几天前,有人告诉我他们的键盘有问题,导致他们无法在键盘上输入(。在编写C时,我想到的第一件事就是从某处复制字符并粘贴它或尝试使用预处理程序指令#define。一旦我尝试使用#define,我意识到gcc不会让我写一些类似#define OB (的东西,而且我非常理解为什么。是否可以写出与此类似的内容,让我用#define

替换标点符号

1 个答案:

答案 0 :(得分:1)

如果(有三字形,我会建议。否则,使用宏的解决方案可能会起作用,但不幸的是,当用C或头文件编写时,它无法按您的需要进行解析。但是,使用gcc,您可以直接使用-D选项指定该宏。

示例:

int main OB ) {
    printf OB "Hello, world\n");
}

我可以使用以下命令编译它:cc -o test test.c -DOB='('。我需要添加',否则bash将不接受。{/ p>

您还可以使用make将额外参数添加到CPPFLAGSCPPFLAGS+="-DOB='('" make test - 再次需要比平常更多的引号,否则所有的shell都不会理解不带引号的(。当然,您只需将CPPFLAGS+=-DOB='('直接添加到Makefile

即可

修改 实际上,您仍然可以在代码中使用宏。但是你必须告诉gcc (不是宏标识符的一部分。以下对我有用:

#define OB \
    (
int main OB ) {
    printf OB "Hello, world\n");
}