我唯一不喜欢Emacs的是缺少命名空间,所以我想知道我是否可以自己实现它们.
这是我的第一次尝试,很明显,我不能用其前缀版本替换名称的每个匹配,但我应该检查什么?我可以用(let)检查绑定然后标记整个子树,但是如果有人创建了一个使用let的(my-let)函数呢?我的努力注定会失败吗?:(
另外,为什么我的defuns无法定义函数?我是否必须在每个新令牌上运行类似于实习符号的内容?
谢谢!
我最近一直在学习flex(不是adobe flex),并且我一直在成功使用flex输出文件(只需编译生成的lex文件即可)。现在,我遇到了野牛,并且我读到野牛使用lex文件从输入中获取标记。
但是现在我有一个问题:我坐在gcc前面,我不知道如何将flex文件(lex 1)和野牛1链接在一起。
我的问题是,如何在gcc中将它们链接在一起?
动机:将结构传递给函数,例如我们可以在任何函数中更改它并检索任何函数中的任何值.
我从以下网站获取了这些代码:http://cboard.cprogramming.com/c-programming/126381-passing-structure-reference-through-4-functions.html#post942397
我调整了一点,这里是:
struct_passing.h
typedef struct thing {
char *x;
}thing_t;
struct_passing.c
#include <stdio.h>
#include "struct_passing.h"
void f4(thing_t *bob) {
bob->x = "changed";
}
void f3(thing_t *bob) {
f4(bob);
printf("inside f3 x: %s\n", bob->x);
}
void f2(thing_t *bob) {
f3(bob);
}
void f1(thing_t *bob) {
f2(bob);
}
int main(void) {
thing_t foo;
foo.x = "same";
printf("Before: %s\n", foo.x);
f1(&foo);
printf("After: %s\n", foo.x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它在ubuntu上的**gcc版本4.4.3上按预期工作
$ gcc -o struct struct_passing.c
$ ./struct
Before: same
inside f3 …Run Code Online (Sandbox Code Playgroud)