小编Rot*_*ces的帖子

Delphi SizeOf(NativeInt)与x86-64上的C sizeof(int).为什么尺寸差异?

前言

经过很长一段时间的C工作后,我回到Delphi,发现Delphi中有一些新东西.一个是NativeInt.

令我惊讶的是,我发现Delphi和C处理x86-64不同的"原生整数" 1种类型.Delphi NativeInt似乎表现得像C void*Delphi Pointer,这与我对名称的期望相反.

Delphi中,NativeInt的大小为64位.代码中表示:

SizeOf(NativeInt) = SizeOf(Pointer) = SizeOf(Int64) = 8
Run Code Online (Sandbox Code Playgroud)

C只有64位指针.int仍然是32位.代码2中表示:

sizeof(int) == 4 != sizeof(void *) == 8
Run Code Online (Sandbox Code Playgroud)

甚至Free Pascal编译器3也同意NativeInt的大小.

为什么Delphi NativeInt选择64位,C int选择32位?

当然,根据语言文档/规范,两者都是有效的.但是,"语言允许它"并不是一个真正有用的答案.

我想这与执行速度有关,因为这是今天C的主要卖点.维基百科和其他消息来源都说x86-64确实有64位操作数寄存器.但是,它们还声明默认操作数大小为32位.因此,与32位操作数相比,64位操作数的操作可能更慢?或者64位寄存器可以同时执行2个32位操作?这是一个原因吗?

编译器的创建者是否确实选择了这些尺寸?

脚注

  1. 我将Delphi NativeIntC int进行比较,因为名称/规范表明它们具有相似的目的.我知道还有Delphi Integer,其行为类似于x68上的C int和Delphi中的x86-64.
  2. sizeof()返回C中多个char的大小.但是,x86-64上的char是1个字节.
  3. 它在Delphi模式和NativeInt的默认模式下都是这样做的.默认模式下的其他整数类型是其他整个蠕虫类型.

c delphi pascal x86-64 sizeof

7
推荐指数
1
解决办法
1575
查看次数

我使用几台具有不同gitconfig的计算机.如何停止将我的电子邮件地址泄露给GitHub?

我在那里工作的计算机$HOME/.gitconfiguser.emailRotatingPieces@work.tld.我家的电脑已经$HOME/.gitconfiguser.emailRotating.P@SuperKawaiiAnimeWeb.net.并且有虚拟机R.Pieces@DogeMemes.net.而笔记本电脑......

这些电子邮件地址对于克隆在这些计算机上的大多数存储库都是正确的.但有时我会混淆我在什么机器上做的事情.在家里和其他方面做工作.

因此,当我在我的公共GitHub/BitBucket/GitLab/Whatever仓库中执行某些操作时,我会提交为RotatingPieces@work.tld.在家工作会创建提交Rotating.P@SuperKawaiiAnimeWeb.net.因此我偶然将这两个电子邮件地址链接在一起.它总是偶然发生.

有办法阻止这个吗?在不同的计算机上使用相同的存储库时,我该怎么做才能阻止自己泄露我的电子邮件地址?

不起作用的事情:

  • 更改$HOME/.gitconfig文件.这些电子邮件地址对于克隆在这些计算机上的大多数存储库都是正确的.
  • git commit --author=....我会一直忘记这个--author选项.
  • .git/config在克隆的存储库中设置电子邮件地址.这仅适用于此存储库的此计算机.我必须记住,每次我创建一个新的克隆库.太容易忘记.

最好的解决方案是服务器端或客户端提交挂钩,您可以将其提交到存储库,然后由git运行.或者我可以在GitHub Web UI中激活一些钩子或电子邮件地址过滤器.然而,出于明显的滥用原因,可能不存在这样的事情.

有人对解决方案有任何想法吗?

git privacy

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

标签 统计

c ×1

delphi ×1

git ×1

pascal ×1

privacy ×1

sizeof ×1

x86-64 ×1