小编Jas*_*Jas的帖子

定义一个函数,该函数返回一个函数指针,该函数指针也返回一个不带typedef的函数指针

我试图不使用typedef而真正理解函数指针,但似乎无法理解。我不知道传递一个指向函数的指针所需要传达的签名。

#include <stdio.h>

void odd()  { printf("odd!\n");  }
void even() { printf("even!\n"); }

void (*get_pfn(int i))()
{
    return i % 2 == 0 ? &even : &odd;
}

__SIGNATURE__
{
    return &get_pfn;
}

int main()
{
    get_pfn_pfn()(1)();
    get_pfn_pfn()(2)();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为了使这项工作,__SIGNATURE__必须做什么?

c function-pointers function

19
推荐指数
3
解决办法
994
查看次数

GCC/Clang 词法分析器和解析器

我很好奇 C/C++ 词法分析器和解析器如何协同工作。我知道解析器通常需要至少一个标记的前瞻。我的问题是,在生产编译器(例如 gcc 或 clang)中:

1)词法分析器是否先运行,对整个文件进行词法分析,然后让解析器生成 AST。这意味着词法分析器会生成一个标记列表。

或者

2) 词法分析器是否只生成一小部分足以让解析器完成其工作的标记。这意味着词法分析器和解析器轮流运行。

我绝对认为使用选项 1,因为像 C++ 这样的语言有时需要任意前瞻,因为语法不是上下文无关的,但这会占用大量内存。

compiler-construction

4
推荐指数
1
解决办法
2706
查看次数