• 已解决 72738 个问题
  • 已帮助 5976 位优秀工程师

#error 如何在KEIL 5中让其编译通过?

zhangsf_chongza 2016-10-26 浏览量:1890
本帖最后由 zhangsf_chongzai 于 2016-10-26 14:08 编辑

如题:

这个在KEIL5中编译通不过?那个晓得如何设置让其通过???


1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

其他答案 数量:8
  • 本帖最后由 SingleYork 于 2016-10-26 14:23 编辑

    源代码贴出来啊……百度翻译的错误提示:"请在编译器选项中定义一个频带"
    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 本帖最后由 LiuYang 于 2016-10-26 14:19 编辑

    #if的地方如果没有定义,就会跳转到#error是来显示显示。
    编译通过的方法就是在其他地方定义个#if判断的那个宏定义。

    #error已经提示了,需要什么就定义什么。
    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • LiuYang 发表于 2016-10-26 14:16
    #if的地方如果没有定义,就会跳转到#error是来显示显示。
    编译通过的方法就是在其他地方定义个#if判断的那 ...

    不是没定义,是编译通不过,用了#error这个预编译宏
    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 本帖最后由 MOP 于 2016-10-26 14:49 编辑

    如果有#if判斷附帶#error的話,通常會跟函式庫非常重要的參數才需要您定義完整,例如Adafruit的SSD1306驅動
    //#define SSD1306_128_64
    //#define SSD1306_128_32
    //#define SSD1306_96_16
    
    #if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16
      #error "At least one SSD1306 display must be specified in SSD1306.h"
    #endif
    以上編譯器會先預判,發現沒定義,就會輸出error訊息,並停止編譯

    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • zhangsf_chongza 发表于 2016-10-26 14:23
    不是没定义,是编译通不过,用了#error这个预编译宏

    之所以在预处理阶段 会报error,就是因为#if.. 条件不成立,就进入到#else中执行#error了。
    要看你#if...的条件了,没帖全代码,也不知道到底是#ifdef 、#ifndef、#if define 。。。
    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 我的编译是没有问题的。



    那个定义所在的位置



    • 发布于2016-10-26
    • 举报
    • 评论 0
    • 0
    • 0

#error 如何在KEIL 5中让其编译通过?