gpt4 book ai didi

c - long的大小是否等于word的大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:11 25 4
gpt4 key购买 nike

你好,我在 Linux 下编程(在 C 中)。

当我使用 ptrace() 读取数据时,它返回一个单词。在所有示例中,我都看到人们使用 long 来读取输入。Long 是否总是具有相同的字长?我知道一个词是处理器处理数据的自然大小(寄存器大小)。但这是否也适用于不同架构等的 long?

 OValue_t outputValue;
//.su_word is a long
outputValue.su_word = ptrace(PTRACE_PEEKDATA,Process.ProcId,address,0);
printf("word : %ld\n", outputValue.su_word);
printf("int8 : %i\n", outputValue.su_int8);

编辑:感谢 Krzysztof Kosiński/unwind 和 Jonathan Leffler 的回答 here我知道 ptrace 返回一个 long 并且一个 long 足以容纳一个词。

http://docs.oracle.com/cd/E19620-01/805-3024/lp64-1/index.html

最佳答案

示例使用 long 因为这就是 function is documented 的方式工作,原型(prototype)是:

long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

手册页中甚至有一条注释说:

The size of a "word" is determined by the operating-system variant (e.g., for 32-bit Linux it is 32 bits).

我认为它也被声明为返回 int,因为 int 应该是平台的“自然”整数大小,我认为这是“典型情况下该平台的字号。

该函数假定long 比“一个词”更精确,据我从手册页中可以看出。它使用 -1 的返回值来表示错误,但由于它当然也可以是有效值,因此还需要您检查 errno

关于c - long的大小是否等于word的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com