小编Mic*_*ino的帖子

为什么C#8阵列切片功能的新hat-operator索引从0开始?

C#8.0引入了一种切片阵列的便捷方法 - 参见官方C#8.0博文.

访问数组的最后一个元素的语法是

int value[] = { 10, 11, 12, 13 };

int a = value[^1]; // 13
int b = value[^2]; // 12
Run Code Online (Sandbox Code Playgroud)

我想知道为什么向后访问元素的索引从1开始而不是0?这有技术原因吗?

c# arrays indexing c#-8.0

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

为 ARM 项目编写 makefile

我的项目结构如下:

.
??? build
??? src
|   ??? rbpi
|   |   ??? gpio.h
|   ??? boot.c
|   ??? boot.s
|   ??? kernel.c
??? linker.ld
Run Code Online (Sandbox Code Playgroud)

这是一个简单的树莓派内核,可以让 LED 闪烁!我目前使用一个包含以下内容的简单 bat 文件来构建它:

arm-none-eabi-gcc -g -O0 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -nostartfiles -Wl,-T,linker.ld src/kernel.c src/boot.c src/boot.s -o build/kernel.elf
arm-none-eabi-objcopy build/kernel.elf -O binary build/kernel7.img
Run Code Online (Sandbox Code Playgroud)

由于我将向该项目添加更多文件,因此我必须将每个文件附加到我的“buildscript”中。
如果可能,我想使用makefile.

如果我想要以下“规则”,我的 makefile 应该是什么样子的?

  • 在编译之前,清除目录中的所有*.elf*.img文件build
  • 编译目录中的所有*.c*.s文件src
  • kernel.elf文件输出到build目录中。
  • 使用链接描述文件linker.ld
  • 编译完成后,运行objcopy生成二进制文件。

gcc makefile

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

标签 统计

arrays ×1

c# ×1

c#-8.0 ×1

gcc ×1

indexing ×1

makefile ×1