我在http:// localhost/nagios上收到错误(返回代码255超出范围)
但是当我从shell运行命令时,它运行正常
我实际上在使用Vala/Tutorial网站上宣传的关于输出参数声明的看似很好的功能时遇到了问题.
这里的引用来自:https://live.gnome.org/Vala/Tutorial#Parameter_Directions
以下是如何实现method_1()的示例:
void method_1(int a, out int b, ref int c) {
b = a + c;
c = 3; }
Run Code Online (Sandbox Code Playgroud)
将值设置为out参数"b"时,Vala将确保"b"不为空.因此,如果您对此值不感兴趣,则可以安全地传递null作为method_1()的第二个参数.
看一下生成的C代码,很明显,与上面提出的声明相矛盾,而不是在赋值之前进行检查,而是可以很好地取消引用可能的NULL指针.
void method_1 (gint a, gint* b, gint* c) {
*b = a + (*c);
*c = 3;
}
Run Code Online (Sandbox Code Playgroud)
我期望的代码将采用这种形式:
void method_1 (gint a, gint* b, gint* c) {
if (b != NULL)
*b = a + (*c);
*c = 3;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的唯一解决方法是抛弃整个参数声明,直接用指针代替.
void method_1 (gint a, int* b, ref int c) { …
Run Code Online (Sandbox Code Playgroud)