小编Jan*_*Jan的帖子

将变量初始化为其自己的未定义值

在C中,将变量初始化为它自己的值是否有意义?如果是,那该怎么办?

请允许我详细说明.在Git源代码中,有一些例子可以将变量初始化为它自己的未定义值,如transport.cwt-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邮件列表上进行更改.这是我学到的.

c

21
推荐指数
1
解决办法
2083
查看次数

Clojure中的不一致:宏中的函数和IllegalArgumentException

以下两个在宏中使用函数的示例会导致无错误的评估.

(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, …

clojure

11
推荐指数
1
解决办法
617
查看次数

如何在3个阶段中最好地管理网站的Git存储库?

我想知道在与Git有一些问题后,处理网站回购的最佳方法是什么.目前我们有3个版本的网站; 生产,测试和开发.我们已经将Git repo设置为3个分支,master(生产),beta(beta),开发(开发).

完成一组更改/功能后,我们会更新开发分支,然后将该分支复制到分支测试版.开发分支上的所有开发工作仍在继续,具有更多新功能等.

我们遇到的问题是,当代码处于测试阶段时,不可避免地会发现错误.这些错误需要在开发和beta分支中修复.同时在开发分支上已经进行了更多的开发,它不属于也不应属于beta分支,所以我们不能真正合并beta和开发分支可以吗?我也真的不想经历时间和麻烦,不得不通过适用于两者的更改对两个repos进行单独提交.

所以我正在寻找的是使用Git管理此类工作流程的最佳方式.

谢谢

git workflow

9
推荐指数
2
解决办法
3439
查看次数

预编译的dex库

我的Android项目包含大量Java库,每次启动应用程序时都会编译为dex.图书馆不会改变.有没有办法将这些库预编译为dex?在制作apk时,每次编译相同的库到dex都会做无用的工作.

android dex

5
推荐指数
1
解决办法
592
查看次数

具有BOM的UTF-8文件中第一行的长度

下午好.假设我有一个带有单个字母的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)

为什么?是否有任何优雅的方法来获得第一个字符串的正确长度?

clojure

5
推荐指数
1
解决办法
589
查看次数

从Ruby中的数组中查找第二大数字

我有一个阵列a = [3,6,774,24,56,2,64,56,34].我需要使用Ruby在单次迭代中找到第二大数字.我该如何实现?

ruby

2
推荐指数
1
解决办法
9132
查看次数

如何为词法分析器创建makefile?

我想使用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)

c lex makefile lexical-analysis

0
推荐指数
1
解决办法
341
查看次数

标签 统计

c ×2

clojure ×2

android ×1

dex ×1

git ×1

lex ×1

lexical-analysis ×1

makefile ×1

ruby ×1

workflow ×1