【发布时间】:2016-08-05 08:37:07
【问题描述】:
宏可以在C语言中方便地给关键字起别名,但它也可以用来改变宏关键字,所以代替:
#include <stdlib.h>
#define se if
可以写
#inkludu <stdlib.h>
#difinu se if
换句话说,预处理指令是否可以别名,最好是在代码本身之外,例如使用编译器参数,例如 gcc 的 -D。
如下所示的简单测试将失败:
#define difinu define
#difinu valoro 2
int main() {
int aĵo = valoro;
return 0;
}
出现以下错误:
% clang makro.c -o makro
makro.c:2:2: error: invalid preprocessing directive
#difinu valoro 2
^
makro.c:5:16: error: use of undeclared identifier 'valoro'
int aĵo = valoro;
^
2 errors generated.
【问题讨论】:
-
你试过了吗?请选择 C 和 C++ 之一,这两种语言不相等,它们的预处理器也不相等。
-
没有。您不能使用预处理器来更改预处理器和语言语法的工作方式。
-
好的,我添加了我已经尝试过的文档,并将问题限制在 C 中(尽管我会感兴趣 C++ 解决方案)。
-
你想通过将整个 C 语言翻译成世界语来完成什么翻转?
-
好吧,正如下面所建议的那样,拥有一种专用语言作为一个长期项目肯定更有意义,包括自托管等等。尤其是在其设计中可能至少部分依赖于世界语常规语法。只是在路上,我会尽可能多地使用世界语。此外,我的目标是使用完整准确的单词,而不是缩短的对应词和其他非字母标记。现在这可能不是一个主要的共同愿望,但可以让我随心所欲地编写代码。