使用使用GCC的糟糕的Eclipse Nios II 4.包含一个文件,可以在线找到font8x8_basic.h。我曾多次警告过我要将文件分开,所以我正在尝试添加关键词 const 和 extern ,只包含在main中以使其全局化。 初始化完成后,不应该使用 extern ,对吗?
但是,带走 const ,会给我一个隐式常量转换的警告。从定义中删除 const ,干净,错误仍然存在!!
在font8x8_basic.h中
#ifndef FONT8x8_H_
#define FONT8x8_H_
char font8x8_basic[128][8] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul)
{ 0x00, 0x00, 0x0,...
在vga_util.h中
#ifndef VGA_UTIL_H_
#define VGA_UTIL_H_
....
#include "font8x8_basic.h"
...
在sensor.h中
#ifndef SENSOR_H_
#define SENSOR_H_
...
#include "vga_util.h"
在main.c中
#include "vga_util.h"
#include "sensor.h"
我的构建日志看起来像这样
05:27:22 **** Incremental Build of configuration Nios II for
project C_eng_job4 ****
make all
Info: Building ../C_eng_job4_bsp/
C:/altera_lite/16.0/nios2eds/bin/gnu/H-x86_64-mingw32/bin/make
--no-print-directory -C ../C_eng_job4_bsp/
[BSP build complete]
Info: Compiling main.c to obj/default/main.o
nios2-elf-gcc -xc -MP -MMD -c -I../C_eng_job4_bsp//HAL/inc
- I../C_eng_job4_bsp/ -I../C_eng_job4_bsp//drivers/inc -pipe -D__hal__
-DALT_NO_C_PLUS_PLUS -DALT_NO_INSTRUCTION_EMULATION -DALT_USE_SMALL_DRIVERS
-DSMALL_C_LIB -DALT_SINGLE_THREADED -O0 -g -Wall -Wpedantic -Werror
-mno-hw-div -mno-hw-mul -mno-hw-mulx -o obj/default/main.o main.c
In file included from vga_util.h:16:0,
from main.c:31:
font8x8_basic.h:69:25: error: overflow in implicit constant conversion
[- Werror=overflow]
{ 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*)
^
font8x8_basic.h:122:49: error: overflow in implicit constant conversion
[-Werror=overflow]
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_)
^
cc1.exe: all warnings being treated as errors
make: *** [obj/default/main.o] Error 1
可以看到完整的代码{{3}}
答案 0 :(得分:3)
0xFF
如果已签名,则不适合char
。
您应该为阵列使用unsigned char
。
如果无法做到,那么您可以尝试转换值:
{ ..., (char) 0xFF, ... };
然后它应该接受这个号码。
你也可以写下负值。在0xFF的情况下,它是-1。将接受介于-128和+127之间的值。
但是,如果您希望在任何编译器上工作,请确保使用signed char
而不仅仅是char
(或者如果可以unsigned char
),因为各种编译器都会看到{{1签名(cl,你正在使用的那个)和其他人作为无符号(gcc)。
答案 1 :(得分:3)
sensor.c包含sensor.h,其中包括font8x8_basic.h。这给出了数组font8x8_basic的一个定义。
main.c包括vga_util.h,其中包括font8x8_basic.h。这给出了数组font8x8_basic的另一个定义。
由于程序中只能有一个对象的定义,因此您需要创建数组" extern"在font8x8_basic.h文件中。
至于编译警告,因为您使用的是0x00和0xFF之间的初始值,请使用unsigned char。如果要将数组类型保持为char,请使用介于-0x80和0x7F之间的值。使用强制转换意味着您强制该值以满足不推荐的数据类型。