小编mri*_*dra的帖子

在没有条件语句或运算符的情况下重写一段C代码?

我正在接受技术面试,面试官给了我一段这样的代码

  int a=1;
  a++;
  ...something..
  ...something.
  if(a==25)
   a=0;
Run Code Online (Sandbox Code Playgroud)

他说我在不使用switch的情况下重写这段代码,if if或if条件的三元运算符.怎么做?

c

8
推荐指数
4
解决办法
1236
查看次数

dev_set_drvdata和dev_get_drvdata的可能用途是什么

我只想知道当我们必须使用这些set和get驱动程序API时可能的用例.所有我都知道数据已保存,稍后我们可以使用数据做某事.我的问题是我们真的需要这样做吗?

 /*
  * These exports can't be _GPL due to .h files using this within them, and it
  * might break something that was previously working...
 */
 void *dev_get_drvdata(const struct device *dev)
 {
       if (dev && dev->p)
              return dev->p->driver_data;
      return NULL;
 }
 EXPORT_SYMBOL(dev_get_drvdata);

 void dev_set_drvdata(struct device *dev, void *data)
 {
      int error;

    if (!dev)
             return;
     if (!dev->p) {
             error = device_private_init(dev);
             if (error)
                     return;
     }
     dev->p->driver_data = data;
 }
  EXPORT_SYMBOL(dev_set_drvdata);
Run Code Online (Sandbox Code Playgroud)

linux-device-driver

7
推荐指数
1
解决办法
6535
查看次数

缓存和紧耦合内存有什么区别

由于嵌入在CPU内部TCM具有哈佛架构,因此存在ITCM(指令TCM)和DTCM(数据TCM).DTCM不能包含任何指令,但ITCM实际上可以包含数据.DTCM或ITCM的尺寸最小为4KiB,因此典型的最小配置是4KiB ITCM和4KiB DTCM.

它看起来像tcm与缓存内存具有相同的目的.

不,他们没有在解释中使用缓存这个词

arm cpu-cache

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

我正在接受技术采访并要求制作这样的结构.

建立一个结构并给它三个这样的成员,

 struct student{
                 int rollno;
                 char name[10];
                 int arr[];
                }stud1, stud2;
Run Code Online (Sandbox Code Playgroud)

现在给stud1提供4条记录,给stud2提供5条记录.我告诉面试官我们必须给数组一些大小,否则它不会被分配任何空间,否则会给编译错误.他说根据C的新标准,这是可能的.最后我无法理解如何去做.有人有建议吗?我试图做一个realloc,但我不确定自己是否会起作用.

c malloc structure

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

如何Lvalue需要错误

有一段代码产生了"Lvalue required"的错误.代码是,

     #include<stdio.h>
     #include<conio.h>
     #define max 10
     int main()
     {
      printf("%d",max++);
      return 0;
     }
Run Code Online (Sandbox Code Playgroud)

很明显,Lvalue错误将出现在上面的代码中,所以我将代码更改为

     int a;
     printf("%d",a=max++); 
Run Code Online (Sandbox Code Playgroud)

我想现在常量的值被分配给一个合适的变量,但仍然出现错误.然后我检查了

     printf("%d",a=max+1);
Run Code Online (Sandbox Code Playgroud)

它没有任何错误.第二段代码有什么问题?

c lvalue

5
推荐指数
2
解决办法
245
查看次数

全局变量不会带来新的价值

我正在制作一个简单的C程序

#include<stdio.h>
static int a;
a = 5;
int main()
{
printf("%d",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器错误:"非静态声明'a'遵循静态声明"

这个错误是什么意思?

c

4
推荐指数
1
解决办法
105
查看次数

在许多驱动程序文件夹中创建 build-in.o

我正在用我的自定义驱动程序构建内核。成功构建后,我发现了许多 build-in.o 文件。任何人都可以详细说明这些文件是如何在这里结束的吗?我只能怀疑这些与更高级别的 makefile 有关。

makefile build linux-kernel

4
推荐指数
1
解决办法
5937
查看次数

此c程序中的格式错误警告

我试图在没有警告的情况下编译该程序,

#include<stdio.h>
int main()
{
    int arr[] = {1,2,3};
    printf("value1 = %d value2 %d\n", *(&arr+1), *(arr+1));//here is the warning
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到编译时警告

warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
Run Code Online (Sandbox Code Playgroud)

我正在64位ubuntu机器gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)编译器上编译我的程序.

c

4
推荐指数
1
解决办法
153
查看次数

*p的大小,其中p是指向2D数组的指针

一个简单的C程序:

  #define MAXROW 2
  #define MAXCOL 2

  int main()
  {
    int (*p)[MAXROW][MAXCOL];
    printf("%d\n",sizeof(*p));
    return 0;
  }
Run Code Online (Sandbox Code Playgroud)

答案是16.我不明白怎么做.

遵循这条规则:

size =元素数量*sizeof(指针变量,即4)

任何人都可以告诉我如何分析这个表达式,以便答案变得明显吗?

c

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

printf 中如何处理 '\0'?

#include<stdio.h>
#include<conio.h>

int main()
{
    char arr[]="\0";
    if(printf("%s",arr))
        printf("not empty");
    else
        printf("empty");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里我认为\0将被视为数组中的 1 个字节并printf返回 1 个字节,因此不应打印空。但输出就是返回的empty意思。那么如何服用呢?printf0printf\0

c printf

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