使用蹩腳的使用GCC 4的Eclipse Nios II。包含一個文件,可以在線查找該文件爲font8x8_basic.h。我有警告說我多次將文件包含在內,所以我正在嘗試添加關鍵詞const和extern,只有主要內容才能使其成爲全局文件。 extern不應該使用,如果初始化完成,是否正確?C:爲什麼在隱式常量轉換中溢出[-Woverflow]?
但是,帶走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
完整代碼可以看出here
不要通過試錯學習C!並且不要在頭文件中使用變量_definiitions_。您應該諮詢C書abotu頭文件是什麼以及如何使用它們。 – Olaf
不要在頭文件中聲明實際數據。而是在頭文件中定義數據元素,在一個源文件中聲明實際數據(不要使用修飾符'static')然後在任何想要使用該數據的文件中包含該頭文件 – user3629249