小编Sal*_*din的帖子

大于和小于switch语句C

我正在尝试编写一个有很多比较的代码

Write a program in “QUANT.C” which “quantifies” numbers.  Read an integer “x” and test it, producing the 
following output: 

x greater than or equal to 1000 print “hugely positive” 
x from 999 to 100 (including 100) print “very positive” 
x between 100 and 0 print “positive” 
x exactly 0 print “zero” 
x between 0 and -100 print “negative” 
x from -100 to -999 (including -100) print “very negative” 
x less than or equal to -1000 print “hugely negative” 

Thus …

c comparison if-statement switch-statement

15
推荐指数
3
解决办法
6万
查看次数

xcodebuild 错误:“已请求但未找到带有标识符的扩展点...”

我在用着Xcode 13.3.1

我正在尝试在 Android Studio 中构建一个 flutter 应用程序。它因以下错误而失败。为了简单起见,我尝试运行它,xcodebuild它产生了与 Android Studio 中相同的错误:

 .oh-my-zsh git:(master) xcodebuild
2022-04-21 19:45:25.858 xcodebuild[32450:312401] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
2022-04-21 19:45:25.859 xcodebuild[32450:312401] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: The directory /Users/salahuddin/.oh-my-zsh does not contain an Xcode project.
Run Code Online (Sandbox Code Playgroud)

知道导致此错误的原因以及如何修复它吗?

xcode ios flutter

11
推荐指数
2
解决办法
2万
查看次数

MISRA 2012违规 - 类型不匹配(规则10.1,10.4)

我正面临MISRA C 2012违规,我无法理解.以下是代码:

#define I2C_CCRH_FS      ((uint8_t)0x80)
#define I2C_CCRH_DUTY    ((uint8_t)0x40)
#define I2C_CCRH_CCR     ((uint8_t)0x0F)

typedef struct I2C_struct
{
  volatile uint8_t CR1;
  volatile uint8_t CR2;
  volatile uint8_t CCRL;
  volatile uint8_t CCRH;
} I2C_TypeDef;

#define I2C_BaseAddress         0x5210
#define I2C ((I2C_TypeDef *) I2C_BaseAddress)

I2C->CCRH &= ~(uint8_t)((I2C_CCRH_FS | I2C_CCRH_DUTY) | I2C_CCRH_CCR);
Run Code Online (Sandbox Code Playgroud)

在之前的代码中,PC-Lint抱怨说:

Unpermitted operand to operator '|' [MISRA 2012 Rule 10.1, required]

Mismatched essential type categories for binary operand [MISRA 2012 Rule 10.4, required]
Run Code Online (Sandbox Code Playgroud)

规则10.1规定ORing应该没有问题unsigned int.(PC-Lint通过第一次OR操作并抱怨第二次!)

规则10.4规定操作的操作数应具有相同的基本类型.

虽然所有操作数都被声明为,但我无法理解为什么存在这些违规行为uint8_t

我试过在每两个ORed常量周围加上括号.我也尝试过将它们全部uint8_t …

c lint misra type-mismatch implicit-conversion

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

如何使用 git log pickaxe 显示更改本身?

我想在 git log 中搜索特定字符串以找到它被修改/删除/添加的位置。

我知道我可以使用pickaxe(ie, git log -S"Text")

当我运行此命令时,只显示发生更改的提交的名称。我也试过git log -G"Text"但没有区别。

当我尝试时git log -p -S"Text",它向我展示了两个文件版本之间的完整比较。

有没有办法找出文本被更改/添加/删除的确切位置(行)?

我查看了相关帖子12但没有回答我的问题。我正在使用 Windows 操作系统。

git git-log

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

从8位微控制器中的存储器位置(带有24位地址)读取值

我认为它应该很简单:

uint32_t getCrc(void)
{
    uint32_t expectedCrc = *(uint32_t*)0x27FF0;

    return expectedCrc;
}
Run Code Online (Sandbox Code Playgroud)

并且如果内存位置具有以下值:以下值

然后expectedCrc应等于0xECD8743D

但令人惊讶的是,该值是: 0x82828282

我尝试定义一个指针,uint32_t并为其分配内存地址,如下所示:

uint32_t getCrc(void)
{
    uint32_t *ptr = (uint32_t*)0x27FF0;

    uint32_t expectedCrc = *ptr;

    return expectedCrc;
}
Run Code Online (Sandbox Code Playgroud)

但指针本身的价值是0xFFFFexpectedCrc平等0x82828282

我在不同的内存地址中找到了这两个值:

在此处输入图片说明

我也尝试了相同的方法,char *ptr = (char*)0x27FF0但是它给出了相同的值。

最后,我尝试检查使用此控制器的char指针的大小是多少uint8_t size = sizeof(char*);,答案是0xb0equals 176

我认为这与24位内存地址和CPU架构有关。我正在研究stm8控制器。

有人可以解释为什么会这样吗?

更新

我尝试用替换地址0x27FF00xFFF0效果很好。所以问题出在长地址。我想在最后一个地址中写入CRC值,以避免在程序变大时用代码本身覆盖它。我该如何处理?

c memory embedded pointers

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

全局/本地/静态互斥锁的区别?

互斥锁用于防止两个或多个线程同时访问同一个资源(文件、变量等)。这可以防止发生竞争条件。

每个线程都有自己的堆栈。这意味着当一个线程调用一个函数时,该线程将拥有该函数中定义的局部变量的唯一副本。但是如果将局部变量定义为static,则只会创建该变量的一个副本,并且所有线程都将访问该副本。

  • 这是否意味着本地static互斥锁没有用?

  • 一个可以static本地互斥是有用的?也许是为了保护static 局部变量?

  • 定义全局互斥锁static有何不同?

c multithreading mutex

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

Rete网络没有Beta网络?

我正在尝试为示例规则绘制Rete网络,该规则在不同模式的变量之间没有绑定。我知道使用beta网络来确保不同模式下的弯曲变量保持一致。

(defrule R1
  (type1 c1 c2)
  (type2 c3)
 =>
)

(defrule R2
  (type2 c3)
  (type3 c4 v1)
  (type4 c5 v1)
 =>
) 
Run Code Online (Sandbox Code Playgroud)

在R1中,两个模式之间没有绑定变量,那么我该如何在Rete网络中合并它们的结果?在R2中,两个规则绑定了变量,而第三个没有绑定。如何在网络中结合这三个规则?我在这种情况下搜索了Rete网络示例,但未找到任何示例。我试图绘制网络,下面是我的网络。这样对吗?

更新:基于加里的答案的新网络

在此处输入图片说明 谢谢

expert-system clips rete

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

我可以将命令行参数读取为二进制吗?

是否可以将命令行参数读取为二进制数?如果是,如何?

例如, ./a -v 10010110

此选项允许用户从 12 个寄存器中选择要使用的寄存器。我希望用户传递一个 16 位二进制数,需要使用 flag 读取寄存器1,否则使用 flat 0

这是我心中的想法。如果这不是一个好主意,我怎样才能在不混淆用户的情况下完成它?

c flags command-line

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

MISRA C 2012 - 规则 21.1 - 以下划线开头的宏

MISRA C 2012 中的规则 21.1 规定

#define 和 #undef 不得用于保留标识符或保留宏名称

此规则适用于以下划线开头的标识符或宏

理由

删除或更改保留宏的含义可能会导致未定义的行为

我不明白为什么宏的名称不能以 unerscore 开头,即使它不是保留宏?例如在我的头文件中:

#ifndef __MY_HEADER_
#define __MY_HEADER_
Run Code Online (Sandbox Code Playgroud)

或者在我正在使用的库中:

#define __I volatile const
Run Code Online (Sandbox Code Playgroud)

我应该更改所有代码和我正在使用的库(这是一个大库)以符合此规则还是有更简单的解决方案?

c lint misra

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

减去两个uint32_t变量会得到一种溢出的结果?

我正在编写一个stm8s微控制器,并且正在使用STVDIDE和COSMIC编译器。

两个uint32_t变量相减的结果保存在另一个uint32_t变量中。有时,此过程会产生怪异的价值。这个怪异的值始终是最高位设置为的期望值1s

这是我的代码片段:

static uint32_t lastReceivedLed = 0;
uint32_t timeSinceLast = 0;

timeSinceLast = IL_TimTimeNow() - lastReceivedLed;

if(timeSinceLast > 2500U)
{
      Inhibitor = ACTIVE;  // HERE IS MY BREAKPOINT
}
Run Code Online (Sandbox Code Playgroud)

这里是如何IL_TimTimeNow()被定义的:

volatile uint32_t IL_TimNow = 0;

uint32_t IL_TimTimeNow(void)
{
    return IL_TimNow; // Incremented in timer ISR
}
Run Code Online (Sandbox Code Playgroud)

以下是调试会话中的一些实际值:

在此处输入图片说明

timeSinceLast 应该 865280 - 865055 = 225 = 0xE1

但是,编译器计算的结果是 4294967265 = 0xFFFFFFE1

注意,最低有效字节是正确的,而其余字节1s在编译器的结果中设置为!!

另请注意,这种情况仅偶尔发生一次。否则,它会按预期工作。

这是溢出吗?什么会导致这种情况?

c embedded overflow

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