码:
int main()
{
int a=1;
switch(a)
{
int b=20;
case 1:
printf("b is %d\n",b);
break;
default:
printf("b is %d\n",b);
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:当b的声明发生在这里时,它为b打印一些垃圾值为什么b在这里没有用20初始化?
我正在开发一个项目,我正在使用它<%= getString("key")%>来动态获取相应的文本.
当我在简单的p标签中使用它时,这很有用,但是我找不到使用Button/Label等控件的方法.
有什么办法,除了打电话
Mybutton.Text = getstring("key");
Run Code Online (Sandbox Code Playgroud)
动态添加文字?
我们的想法是getString检索af语言代码,并根据该代码获取适当语言的字符串.
我一直在环顾四周,但我遇到的只是在aspx页面中直接使用嵌入式代码标签,而不会将其剪切为buttontext.
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int x = 2;
int *pointer2 = &x;
int number = &x;
printf("%x\n",number );
printf("%x\n",number+1 );
printf("%x\n",pointer2 );
printf("%x\n",pointer2+1);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我从gcc得到一个警告,"初始化从指针生成整数,没有强制转换[默认情况下启用]",但是当我编译时,得到以下输出:
5da24540
5da24541
5da24540
5da24544
Run Code Online (Sandbox Code Playgroud)
很明显,上面的事情没有发生,因为我们可以在输出的前两行看到地址只增加1而第二种情况下增加4.请解释并返回可以分配给其他变量的地址,如int或它是一个自我指针,只能指定给指针类型.
处理一个简单的ADC项目,从多个通道上的分压器读取电压.我在商用和制作精良的PCB上使用STM32f103rb.我正在读PORTA上的引脚,以下引脚工作并返回电压:
PA0,PA1,PA4,PA5,PA6,PA7.
但是,以下引脚不起作用并返回大约2000-2700的原始值:
PA8,PA11和PA12.
该项目的性质以及PCB具有固定设计的事实意味着我们坚持使用这些引脚选择.数据表非常具体,可以将这些引脚用作AIN.所有设置和配置均按照标准STM32进行,取自基本示例代码并根据我们的目的进行修改.包含的代码是我们制作的调试版本,试图找到原因但无济于事.
已经测量了引脚上的电压,并且对于分压器的类型是正确的.
任何帮助将不胜感激.
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stdio.h"
#include "stdlib.h"
// Standard STM peripheral config functions
void RCC_Configuration(void);
void GPIO_Configuration(void);
// ADC config - STM example code
void NEW_ADC_Configuration(void);
// Function to read ADC channel and output value
u16 NEW_readADC1(u8 channel);
// Variables
double voltage_su; // Variable to store supply voltage
double voltage7;
double voltage8;
//*****************************************************************************
// Main program
int main(void)
{
// Initialise peripheral modules
RCC_Configuration();
GPIO_Configuration();
NEW_ADC_Configuration();
// Infinate loop
while (1) …Run Code Online (Sandbox Code Playgroud) 我想以下面的方式在画布上的圆圈内绘制一些线条.
我不知道如何绘制如下所示的线条.但我掌握了在画布上绘制线条和弧线的基本知识.如何进行?

我试图理解memcpy()C库中定义的函数<string.h>
句法: void *memcpy(void*dst,const void*src,size_t n);
我知道这个函数用于将指针指向的内存的内容复制到指针指向src的位置,dst并返回指针指向的地址dst.
我无法理解以下重要声明memcpy():
memcpy(),内存地址不应重叠,如果重叠,memcpy()则未定义.另一个查询是:传递给函数的第三个参数的size_t n值是否总是一个整数值?
我写了这个memcpy函数,但我仍然需要禁用规则11.5和11.8.是否有完整的MISRA:2012兼容解决方案?
#pragma cstat_suppress="MISRAC2012-Rule-21.6" // Uses of stdio.h were found.
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
extern int main(void);
static int_least8_t _memcpy(void *dst, const void *src, const size_t length)
{
#pragma cstat_disable="MISRAC2012-Rule-11.5" // A conversion from a pointer to void into a pointer to object was found.
int_least8_t* destination = (int_least8_t*)dst;
#pragma cstat_disable="MISRAC2012-Rule-11.8" // A cast that removes a const or volatile qualification was found.
const int_least8_t* source = (int_least8_t*)src;
#pragma cstat_restore="MISRAC2012-Rule-11.5","MISRAC2012-Rule-11.8"
for (size_t i = 0; …Run Code Online (Sandbox Code Playgroud) Misra 2004有以下规则:
Rule 16.1: Functions shall not be defined with variable numbers of arguments
Run Code Online (Sandbox Code Playgroud)
因此,类似的功能printf不能与规则16.1一起使用.
uint32_t debug_print(char *format, ...)
{
int int_ret_val=0;
uint32_t ret_val = ERR_NO_ERROR;
va_list arguments;
va_start(arguments, format);
ret_val = vprintf(format, arguments);
va_end(arguments);
return ret_val;
}
Run Code Online (Sandbox Code Playgroud)
我寻找替代方案,但没有找到任何.
用于记录字符串格式化消息(" %d,%f,..")的所有c系列命令是否都使用变量列表?
以下是#include来自Google的C++风格指南的部分:
如果您依赖bar.h中的符号,请不要指望您包含foo.h这个(当前)包含bar.h:自己包含bar.h,除非foo.h明确表明其意图为您提供bar.h的符号.
但是,相关头中存在的任何包含不需要再次包含在相关的cc中(即,foo.cc可以依赖于foo.h的包含).
当我读到这篇文章时,这些句子似乎是矛盾的.他们对我说:
foo.cc需要的东西bar.h,它必须包括bar.h.foo.cc需要填充bar.h,foo.cc包含foo.h和foo.h包含bar.h,则foo.cc不需要包含bar.h.为什么这些句子不相矛盾?