我正在尝试编写一个有很多比较的代码
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 …
我在用着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)
知道导致此错误的原因以及如何修复它吗?
我正面临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 …
我想在 git log 中搜索特定字符串以找到它被修改/删除/添加的位置。
我知道我可以使用pickaxe(ie, git log -S"Text")
当我运行此命令时,只显示发生更改的提交的名称。我也试过git log -G"Text"但没有区别。
当我尝试时git log -p -S"Text",它向我展示了两个文件版本之间的完整比较。
有没有办法找出文本被更改/添加/删除的确切位置(行)?
我认为它应该很简单:
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)
但指针本身的价值是0xFFFF和expectedCrc平等0x82828282
我在不同的内存地址中找到了这两个值:
我也尝试了相同的方法,char *ptr = (char*)0x27FF0但是它给出了相同的值。
最后,我尝试检查使用此控制器的char指针的大小是多少uint8_t size = sizeof(char*);,答案是0xb0equals 176。
我认为这与24位内存地址和CPU架构有关。我正在研究stm8控制器。
有人可以解释为什么会这样吗?
更新
我尝试用替换地址0x27FF0,0xFFF0效果很好。所以问题出在长地址。我想在最后一个地址中写入CRC值,以避免在程序变大时用代码本身覆盖它。我该如何处理?
互斥锁用于防止两个或多个线程同时访问同一个资源(文件、变量等)。这可以防止发生竞争条件。
每个线程都有自己的堆栈。这意味着当一个线程调用一个函数时,该线程将拥有该函数中定义的局部变量的唯一副本。但是如果将局部变量定义为static,则只会创建该变量的一个副本,并且所有线程都将访问该副本。
这是否意味着本地非static互斥锁没有用?
一个可以static本地互斥是有用的?也许是为了保护static
局部变量?
定义全局互斥锁static有何不同?
我正在尝试为示例规则绘制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网络示例,但未找到任何示例。我试图绘制网络,下面是我的网络。这样对吗?
更新:基于加里的答案的新网络
是否可以将命令行参数读取为二进制数?如果是,如何?
例如,
./a -v 10010110
此选项允许用户从 12 个寄存器中选择要使用的寄存器。我希望用户传递一个 16 位二进制数,需要使用 flag 读取寄存器1,否则使用 flat 0。
这是我心中的想法。如果这不是一个好主意,我怎样才能在不混淆用户的情况下完成它?
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)
我应该更改所有代码和我正在使用的库(这是一个大库)以符合此规则还是有更简单的解决方案?
我正在编写一个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在编译器的结果中设置为!!
另请注意,这种情况仅偶尔发生一次。否则,它会按预期工作。
这是溢出吗?什么会导致这种情况?