小编use*_*216的帖子

为什么#pragma 被视为预处理器指令?

我知道它以 开头#,并且遵循预处理指令格式。但是预处理器真的关心它吗?的#pragma pack#pragma once和其他所有的指令,我知道,都是由编译器进行。这个问题中的评论甚至指出#pragma指令在预处理阶段仍然存在。所以我的问题是:

  1. 既然#pragma是编译器,为什么它被认为是一个预处理指令?仅仅是因为它以 开头#吗?
  2. 预处理器真的对#pragma?

c preprocessor pragma

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

Verilog:if语句和case语句之间的区别

我是 Verilog 语言的新手,想做一些练习来熟悉它。我在HDLbits上遇到了这个问题:DFF8ar

这个问题要求我创建 8 个具有高电平有效异步复位功能的 D 触发器。我使用一个case语句来处理areset信号:

module top_module (
input clk,
input areset,   // active high asynchronous reset
input [7:0] d,
output reg[7:0] q
);

always @(posedge clk or posedge areset) begin
    case (areset)
        1'b1: q <= 8'b0; 
        default: q <= d;
    endcase
end
endmodule
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它生成的电路忽略了该clk信号: 在此输入图像描述

但是,如果我将case语句切换为if-else语句,结果将是正确的:

always @(posedge clk or posedge areset) begin
    if (areset)
        q <= 8'b0; 
    else q <= d;
end
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

即使进行了一些研究后,我也不知道其背后的原因。if-else陈述和 …

verilog hdl system-verilog

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

弃用/废弃某些 Linux 时间 API 的原因是什么?

Linux 有许多 API 可用于设置系统时间:我们可以使用time(), gettimeofday(),clock_gettime()来获取时间,也可以使用stime(), settimeofday(),clock_settime()来设置时间。

但是,我注意到其中一些 API 被标记为“已弃用”或“过时”。我找不到这种弃用背后的原因。具体来说:

为什么stime()已弃用(来源)但没有time()gettimeofday()提供比 更高的分辨率time(),但前者而不是后者被宣布“过时”(来源)。

这些决定的原因是什么?

c linux posix

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

标签 统计

c ×2

hdl ×1

linux ×1

posix ×1

pragma ×1

preprocessor ×1

system-verilog ×1

verilog ×1