我想知道C预处理器如何处理循环依赖(#defines).这是我的计划:
#define ONE TWO
#define TWO THREE
#define THREE ONE
int main()
{
int ONE, TWO, THREE;
ONE = 1;
TWO = 2;
THREE = 3;
printf ("ONE, TWO, THREE = %d, %d, %d \n",ONE, TWO, THREE);
}
Run Code Online (Sandbox Code Playgroud)
这是预处理器输出.我无法弄清楚为什么输出是这样的.我想知道预处理器在这种情况下采取的各种步骤,以提供以下输出.
# 1 "check_macro.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "check_macro.c"
int main()
{
int ONE, TWO, THREE;
ONE = 1;
TWO = 2;
THREE = 3;
printf ("ONE, TWO, THREE = %d, %d, %d \n",ONE, TWO, THREE); …
Run Code Online (Sandbox Code Playgroud) 我完全理解32或64位系统的含义.所以基本上所有寄存器或字长都是32位或64位.
为简单起见,让我们采用一个32位系统并说我在C中编写一个程序,如果我声明一个int类型说"int a = 5;" 然后为var a保留一个字长的存储位置.因此,当我想要访问它时,我可以使用字地址为该内存位置.
但是说我有4个字符"char a,b,c,d;" 因为它是一个字节,每个都放在一个字中,所以如果我只想访问char b,我该怎么办?(说内存是字节可寻址的)现在说b是字中的第三个字节...那怎么来公共汽车?总线的第3个字节硬连接到第17到第24行?那么当只有b被访问时,其他24行会发生什么?
在我正在做的项目中,我必须从结构化文件(xml)中获取用户输入.该文件包含区域的道路数据,我必须将其绘制到matplotlib画布上.问题是,除了道路,我还必须渲染道路名称,大多数道路都是弯曲的.我知道如何以一个角度渲染文本.但我想知道是否有可能在字符串中途改变文字角度?
这样的事情:在弯曲的路径上绘制旋转的文本
但是使用matplotlib.
我正在阅读有关alarm()调用如何在linux上工作的内容。
Alarm(5)将在至少 5 秒内向发出此调用的进程发送SIGALRM 。
由于内核设置的递减计数器达到零,此时会引起警报。
我的疑问在这里 - 我们可以有 N 个发出警报呼叫的进程,并且系统中有一个可用于此目的的递减计数器。因此,内核必须通过一个递减计数器来跟踪它必须向其发送信号的所有进程。它是如何做到的?
[它是否维护一个排序链表,每个节点代表一个过程?]
字节顺序决定了字中字节的顺序。让我们考虑以下
内存系统:
所以这是一个字节可寻址的 32 位存储器。如果我将一个十六进制值移动'val = 0x56789A'
到字地址为 0 的内存位置,那么对于大尾数法来说,它将如下所示:
对于小端来说是这样的:
但我们知道在寄存器中,值本身存储为“56789A”,因此如果我们有大端字节序,那么这没有问题,因为可以按正确的顺序加载值。
但如果是小尾数法,则必须颠倒顺序呢?在小尾数中,它将被加载为“9A7856”,这是错误的。
那么我们是否将它像这样存储在内存中,(即)对小端类型排序有不同的组织?例如 :
现在我们可以将字地址位置“0”处的值加载到寄存器中以进行进一步的操作。这是一个可能的解决方案。
但现在这意味着字节顺序将取决于内存单元的排列,而不完全取决于处理器……这到底是如何工作的?
或者字节顺序是否完全不受内存架构影响而仅受处理器影响?那么最后字节顺序取决于处理器还是内存?
language-agnostic memory hardware cpu-architecture endianness
我已经读过数据结构在文本编辑器中被大量使用.但正如我所看到的,如果我使用高级语言编写一个简单的文本编辑器,那么我就不需要使用任何数据结构.
例如,在Java中,我可以使用Swing JTextArea
和getText()
方法将我拥有的字符串保存到文件中.基本上,我有一个没有数据结构的简单文本编辑器.
我猜测编辑的数据结构是在JTextArea
自己实现的.它是否正确?或者数据结构是否更低; 也就是说,操作系统从键盘接收数据进入缓冲区?那么有人可以帮助我理解数据结构在什么抽象级别实现?
linux ×2
alarm ×1
architecture ×1
bus ×1
c ×1
endianness ×1
gcc ×1
hardware ×1
java ×1
linux-kernel ×1
matplotlib ×1
memory ×1
python ×1
swing ×1
system-calls ×1
text-editor ×1
textbox ×1
timer ×1
variables ×1