在C中,将变量初始化为它自己的值是否有意义?如果是,那该怎么办?
请允许我详细说明.在Git源代码中,有一些例子可以将变量初始化为它自己的未定义值,如transport.c或 wt-status.c中所示.我从那些声明中删除了作业并运行了测试.看到没有回归,我认为这些任务是多余的.
另一方面,我用GCC 4.6和Clang 2.9进行了一些简单的测试.
#include <stdio.h>
int main() {
printf("print to increase probability of registers being non-zero\n");
int status = status;
return printf("%i\n", status);
}
Run Code Online (Sandbox Code Playgroud)
使用-Wall -std=c99和各种-O级别进行编译不会显示任何警告并显示该信息status == 0.具有非零优化级别的Clang会打印一些垃圾值.这让我推断这些表达式的结果是不确定的.
我可以想象这样的赋值可以抑制未初始化的变量警告,但是从Git中获取的示例并非如此.删除分配不会引入任何警告.
这样的任务是不确定的行为吗?如果没有,你用它们做什么?
我已经建议在Git邮件列表上进行更改.这是我学到的.
以下两个在宏中使用函数的示例会导致无错误的评估.
(defmacro works []
(let [f (fn [] 1)]
`(~f)))
(works)
;; => 1
(defn my-nullary-fn []
(fn [] 2))
(defmacro also-works []
(let [f (my-nullary-fn)]
`(~f)))
(also-works)
;; => 2
Run Code Online (Sandbox Code Playgroud)
然而,
(defmacro does-not-work []
(let [f (constantly 3)]
`(~f)))
(does-not-work)
Run Code Online (Sandbox Code Playgroud)
投
java.lang.IllegalArgumentException: No matching ctor found
for class clojure.core$constantly$fn__4051
Run Code Online (Sandbox Code Playgroud)
同样,
(defn my-unary-fn [x]
(fn [] x))
(defmacro also-does-not-work []
(let [f (my-unary-fn 4)]
`(~f)))
(also-does-not-work)
Run Code Online (Sandbox Code Playgroud)
投
java.lang.IllegalArgumentException No matching ctor found
for class user$my_other_fn$fn__12802
Run Code Online (Sandbox Code Playgroud)
可能是什么原因?有没有函数对象之间的差异返回的fn,my-nullary-fn, …
我想知道在与Git有一些问题后,处理网站回购的最佳方法是什么.目前我们有3个版本的网站; 生产,测试和开发.我们已经将Git repo设置为3个分支,master(生产),beta(beta),开发(开发).
完成一组更改/功能后,我们会更新开发分支,然后将该分支复制到分支测试版.开发分支上的所有开发工作仍在继续,具有更多新功能等.
我们遇到的问题是,当代码处于测试阶段时,不可避免地会发现错误.这些错误需要在开发和beta分支中修复.同时在开发分支上已经进行了更多的开发,它不属于也不应属于beta分支,所以我们不能真正合并beta和开发分支可以吗?我也真的不想经历时间和麻烦,不得不通过适用于两者的更改对两个repos进行单独提交.
所以我正在寻找的是使用Git管理此类工作流程的最佳方式.
谢谢
我的Android项目包含大量Java库,每次启动应用程序时都会编译为dex.图书馆不会改变.有没有办法将这些库预编译为dex?在制作apk时,每次编译相同的库到dex都会做无用的工作.
下午好.假设我有一个带有单个字母的utf-8文件,比如"f"(没有\n和空格),我试着获得一系列行长度.
(with-open [rdr (reader "test.txt")]
(doall (map #(.length %) (line-seq rdr))))
Run Code Online (Sandbox Code Playgroud)
我明白了
=> (2)
Run Code Online (Sandbox Code Playgroud)
为什么?是否有任何优雅的方法来获得第一个字符串的正确长度?
我有一个阵列a = [3,6,774,24,56,2,64,56,34].我需要使用Ruby在单次迭代中找到第二大数字.我该如何实现?
我想使用flex为我的词法分析器制作一个make文件,我已经尝试过很多make文件的模板,但它没有用,所以请帮我构建一个这里是编译代码的行:
lex -t lexical.l > lexical.c
cc -c -o lexical.o lexical.c
cc -o lexy lexical.o -ll
Run Code Online (Sandbox Code Playgroud)