Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lua中的仅调试范例?_C#_C++_Build_Lua_Xdebug - Fatal编程技术网

C# Lua中的仅调试范例?

C# Lua中的仅调试范例?,c#,c++,build,lua,xdebug,C#,C++,Build,Lua,Xdebug,在C/C++中,我们有 \ifdef\u调试 ... #恩迪夫 在C#中,我们有 #如果调试 ... #恩迪夫 及 [条件(“调试”)] 我不希望有任何东西像处理只调试代码的基于属性的方式那样奇特,但我想知道是否有一种清单常量之类的东西,或者任何其他方式使代码只出现在调试构建中。例如,我目前正在Lua做以下工作: 如果不是类型(parameters.callback)==“function”,则 错误(“回调”参数不是函数,或缺少(nil)。”; 结束 如果不是类型(parameter

在C/C++中,我们有

\ifdef\u调试
... 
#恩迪夫
在C#中,我们有

#如果调试
... 
#恩迪夫

[条件(“调试”)]
我不希望有任何东西像处理只调试代码的基于属性的方式那样奇特,但我想知道是否有一种清单常量之类的东西,或者任何其他方式使代码只出现在调试构建中。例如,我目前正在Lua做以下工作:

如果不是类型(parameters.callback)==“function”,则
错误(“回调”参数不是函数,或缺少(nil)。”;
结束
如果不是类型(parameters.times)==“number”,则
错误(“times”参数不是数字或缺少(nil)。”;
结束
如果不是类型(parameters.interval)='number'或不是parameters.interval==nil,则
错误('interval'参数不是数字');
结束
我甚至不知道它是否会运行。对这门语言完全陌生

考虑到我正在编写的函数的性质,一个简单的
retry
函数会计算尝试次数,一个可选的间隔和一个回调作为参数——我预计在整个应用程序编写过程中会多次使用它——并且它将在微控制器上运行——我觉得这些检查不应该在生产版本中进行,因为我猜它们可能会相对昂贵?!?!我甚至在for循环中进行类型检查

语言中是否已经内置了允许条件编译的东西?还是有人想出了一个干净整洁的方法来处理这类事情?我知道我可以声明一个全局变量,将其标记为调试构建,并简单地在上面放置和if块,但我想我会问

谷歌搜索让我一事无成。事实上,当我读到有关Lua的网站时,我感觉自己回到了90年代中后期的网络

谢谢, 李

编辑

或者我只是把这个方法写成一个C模块

使代码只出现在调试版本中的方法

Lua没有“构建”。这是一种解释性语言。在内部,它被编译成字节码,但这是一个实现细节

但是,如果您对构建步骤没有意见,那么您可以像C一样使用预编译器。事实上,您可以使用与您的C编译器相同的语法,然后您将获得您已经熟悉的语法

例如,我的MSVC旧副本使用
cl/EP
通过预处理器运行
filename
,并将输出转储到stdout。然后你可以写:

#ifdef _DEBUG 

    -- debug Lua code goes here

#endif

最干净的方式可能是

_DEBUG = true

if _DEBUG then
    --code
end

所使用的Lua的风格是eLua或嵌入式Lua,它允许将脚本预编译为字节码

代码在GitHub上,所以如果时间允许,我将考虑提交一个补丁,允许真正的条件编译,因为它都是C代码

这样每个人都会受益。原始问题中的检查是否昂贵通常情况下,您需要代码输入或输出,这取决于您是在积极地处理它还是在生产环境中使用它,而不是相反

由于它们支持预编译,并且只针对具有不同性能和内存限制级别的嵌入式设备,如果它们还没有实现支持,我也不会感到惊讶。我会跳过去看看下一个


谢谢大家。

不过我认为您的代码不会“昂贵”。Lua的速度非常快。成本问题来自于它将被用于微控制器,但所使用的特定控制器非常快。请看下面我的答案。别忘了接受帮助你的答案,我相信我的答案确实帮助了你。我提出了所有建议,并提出了一个额外的解决方案。