在普通C(msvc)中模拟lambda-递归lambda

在普通C(msvc)中模拟lambda-递归lambda,c,lambda,c-preprocessor,C,Lambda,C Preprocessor,因此,我面临着在msvc编译器上用纯C语言模拟lambda定义的挑战(它不支持gcc扩展)-我提出了一个文件包含解决方案,它基本上反映了顶部的文件。它在大多数情况下都可以正常工作,但如果我想在lambda中包含lambda,该怎么办 #ifndef FIRSTPASS #include <stdio.h> //here comes your "nested" definitions #define FIRSTPASS #include "source.c" #undef FIRST

因此,我面临着在msvc编译器上用纯C语言模拟lambda定义的挑战(它不支持gcc扩展)-我提出了一个文件包含解决方案,它基本上反映了顶部的文件。它在大多数情况下都可以正常工作,但如果我想在lambda中包含lambda,该怎么办

#ifndef FIRSTPASS
#include <stdio.h>

//here comes your "nested" definitions
#define FIRSTPASS
#include "source.c"
#undef FIRSTPASS

main(){
#else
    int global = 2;
    int func() 
    {
        //define another "lambda" here
        printf("%d\n", global);
    }
#endif
#ifndef FIRSTPASS
    func();}
#endif
\ifndef FIRSTPASS
#包括
//下面是您的“嵌套”定义
#定义首次通过
#包括“source.c”
#未定义首次通过
main(){
#否则
int global=2;
int func()
{
//在这里定义另一个“lambda”
printf(“%d\n”,全局);
}
#恩迪夫
#ifndef首次通行证
func();}
#恩迪夫

您打算用它来模拟lambda的哪些特征?因为我看不出你有多大收获。特别是,您并不是在关闭
main()
的局部变量
global
,而是在不同的范围内创建两个不同的变量,使用该名称,一个隐藏另一个。@JohnBollinger如果需要,我可以使用变量参数传递局部变量。在这里,我主要是模仿在另一个函数中以文本方式声明一个函数的可能性。好吧,嵌套函数的要点通常是有重叠的作用域,而您使用的语法技巧并没有实现这一点,所以我看不出这一点。但是如果你的船漂浮在水面上,那么你应该能够再次使用同样的技巧来分层,不管你喜欢多少层。