编译器错误消息
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=CompilerErrMsg
- 最后更新: 2024-05-18
程序编译期间可能出现三种类型的错误:
警告不会停止编译,只是提醒用户代码中存在不推荐的或容易出错的操作。
有时这些操作是故意编写的以达到某种效果,在这种情况下,可以在命令行设置 -w none 选项来禁用警告。
- 1(2) 将标量作为指针传递
- 2(2) 将指针传递给标量
- 3(2) 传递不同类型的指针
- 4(2) 可疑的指针赋值
- 5(1) 隐式转换
- 6(2) 无法在没有 -export 选项的情况下导出符号
- 7(2) 标识符名称太长,已截断
- 8(2) 字面数值太大,已截断
- 9(2) 字面字符串太大,已截断
- 10(1) 含有指针、变长字符串或变长数组字段的 UDT
- 11(1) 隐式变量分配
- 12(1) 字面字符串中缺少结束引号
- 13(1) 函数返回值未显式设置
- 14(2) 分支跳过了局部变量定义
- 15(1) 没有显式 BYREF 或 BYVAL
- 16(1) 发现可能的转义序列
- 17(1) 类型长度太大,考虑用 BYREF 传递
- 18(2) 参数列表长度太大,考虑用 BYREF 传递 UDT
- 19(2) ANY 初始化器对有默认构造函数的 UDT 无效
- 20(3) 目标文件或库混用了多线程(-mt)选项
- 21(3) 目标文件或库混用了语言(-lang)选项
- 22(1) 删除 ANY 指针是未定义行为
- 23(3) 数组对栈来说太大,考虑将其声明为变长或 SHARED
- 24(3) 变量对栈来说太大,考虑将其声明为 SHARED
- 25(1) 常量转换时溢出
- 26(1) NEXT 后面的变量无意义
- 27(1) 转换为非指针
- 28(1) 返回方式不匹配
- 29(1) 传递指针
- 30(1) 命令行选项覆盖了指令
- 31(1) 第一次处理后忽略指令
- 32(1) 在多行 'ELSE' 之后直接发现 'IF' 语句
- 33(1) 移位值大于或等于数据类型的位数
- 34(1) 函数参数中的 '=' 被解析为相等运算符,而非对 BYREF 函数结果的赋值
- 35(1) 混用有符号/无符号操作数
- 36(1) 参数初始化器不匹配
- 37(2) 不明确的 LEN 或 SIZEOF
- 38(1) 可疑的逻辑运算,混用了布尔和非布尔操作数
- 39(1) 重新定义内置符号
- 40(0) CONST 限定符被丢弃
- 41(0) 返回类型不匹配
- 42(0) 调用约定不匹配
- 43(0) 参数数量不匹配
- 44(1) 后缀被忽略
- 45(1) FOR 计数器变量无法超过限制值
- 46(1) #cmdline 被忽略
- 47(1) 使用了保留的全局或后端符号
- 48(1) 应为数字
- 49(1) 向上转型丢弃了初始化器
- 50(2) 传递给 BYREF 参数的可疑地址表达式
- 51(1) GCC/Clang 未提供正确的 sysroot。您可能需要向 fbc 传递形如 '-sysroot $NDK/platforms/android-$API/arch-$ARCH' 的参数
错误消息会在出现 10 个错误后(参见 -maxerr 命令行选项以更改该默认值)或发生致命错误后停止编译,需要用户更正后才能继续编译。编译器会指出发现错误的行,以便快速定位和更正。少数情况下,错误消息所指向的位置不是错误所在之处,而是编译器放弃等待某个本应存在的内容的位置。
- 1 参数数量不匹配
- 2 应为文件末尾
- 3 应为行末
- 4 重复定义
- 5 应为 'AS'
- 6 应为 '('
- 7 应为 ')'
- 8 未定义符号
- 9 应为表达式
- 10 应为 '='
- 11 应为常量
- 12 应为 'TO'
- 13 应为 'NEXT'
- 14 应为标识符
- 15 应为 '-'
- 16 应为 ','
- 17 语法错误
- 18 元素未定义
- 19 应为 'END TYPE' 或 'END UNION'
- 20 类型不匹配
- 21 内部错误!
- 22 参数类型不匹配
- 23 文件未找到
- 24 无效数据类型
- 25 无效字符
- 26 文件访问错误
- 27 递归层次太深
- 28 应为指针
- 29 应为 'LOOP'
- 30 应为 'WEND'
- 31 应为 'THEN'
- 32 应为 'END IF'
- 33 非法的 'END'
- 34 应为 'CASE'
- 35 应为 'END SELECT'
- 36 维度数量错误
- 37 数组边界与原始 EXTERN 声明不匹配
- 38 'SUB' 或 'FUNCTION' 没有 'END SUB' 或 'END FUNCTION'
- 39 应为 'END SUB' 或 'END FUNCTION'
- 40 此处的返回类型与 DECLARE 原型不匹配
- 41 调用约定与 DECLARE 原型不匹配
- 42 变量未声明
- 43 需要变量
- 44 在复合语句外非法
- 45 应为 'END ASM'
- 46 函数未声明
- 47 应为 ';'
- 48 未定义标签
- 49 数组维度太多
- 50 数组太大
- 51 用户定义类型太大
- 52 应为标量计数器
- 53 在 CONSTRUCTOR、DESTRUCTOR、FUNCTION、OPERATOR、PROPERTY 或 SUB 块外非法
- 54 应为变长数组
- 55 定长字符串不能从函数返回
- 56 数组已经确定维度
- 57 没有 -ex 选项时非法
- 58 类型不匹配
- 59 非法规范
- 60 应为 'END WITH'
- 61 在函数内部非法
- 62 SELECT 和第一个 CASE 之间存在语句
- 63 应为数组
- 64 应为 '{'
- 65 应为 '}'
- 66 应为 ']'
- 67 表达式太多
- 68 应为显式结果类型
- 69 范围太大
- 70 不允许前向引用
- 71 不完整类型
- 72 数组未确定维度
- 73 数组访问,应为索引
- 74 应为 'END ENUM'
- 75 变长数组不能被初始化
- 76 动态数组给出了 '...' 省略号上界(不支持此用法)
- 77 数组字段给出了 '...' 省略号上界(不支持此用法)
- 78 无效位字段
- 79 参数太多
- 80 宏文本太长
- 81 无效命令行选项
- 82 为 DOS 编译时选择了非 x86 CPU
- 83 选择的 -gen gas|gas64 汇编后端与 CPU 不兼容
- 84 -asm att 用于 -gen gas,但 -gen gas 只支持 -asm intel
- 85 -pic 不支持 -gen gas
- 86 使用了 -pic,但目标系统不支持(只适用于 Unix)
- 87 变长字符串不能被初始化
- 88 不允许递归 TYPE 或 UNION
- 89 不允许递归 DEFINE
- 90 标识符不能包含句点
- 91 可执行文件未找到
- 92 数组越界
- 93 缺少命令行选项参数
- 94 应为 'ANY'
- 95 应为 'END SCOPE'
- 96 在复合语句或作用域块内非法
- 97 UDT 函数结果不能按引用传递
- 98 对重载函数的调用存在歧义
- 99 没有匹配的重载函数
- 100 除以零
- 101 无法弹出栈,发生下溢
- 102 包含变长字符串字段的 UDT 不能被初始化
- 103 跳转到包含局部变量的作用域块
- 104 跳转到其他函数或模块级别
- 105 分支跳过了局部数组、变长字符串或对象定义
- 106 没有 DO 的 LOOP
- 107 没有 FOR 的 NEXT
- 108 没有 WHILE 的 WEND
- 109 没有 WITH 的 END WITH
- 110 没有 IF 的 END IF
- 111 没有 SELECT 的 END SELECT
- 112 没有 SUB 或 FUNCTION 的 END SUB 或 FUNCTION
- 113 没有 SCOPE 的 END SCOPE
- 114 没有 NAMESPACE 的 END NAMESPACE
- 115 没有 EXTERN 的 END EXTERN
- 116 没有 IF 的 ELSEIF
- 117 没有 IF 的 ELSE
- 118 没有 SELECT 的 CASE
- 119 不能修改常量
- 120 应为句点('.')
- 121 应为 'END NAMESPACE'
- 122 在 NAMESPACE 块内非法
- 123 在命名空间内定义的符号不能被移除
- 124 应为 'END EXTERN'
- 125 应为 'END SUB'
- 126 应为 'END FUNCTION'
- 127 应为 'END CONSTRUCTOR'
- 128 应为 'END DESTRUCTOR'
- 129 应为 'END OPERATOR'
- 130 应为 'END PROPERTY'
- 131 在原始命名空间之外声明
- 132 没有多行注释结束符,应为 "'/"
- 133 错误太多,正在退出
- 134 应为 'ENDMACRO'
- 135 EXTERN 或 COMMON 变量不能被初始化
- 136 EXTERN 或 COMMON 动态数组不能有初始边界
- 137 至少一个参数必须是用户定义类型
- 138 参数或结果必须是用户定义类型
- 139 两个参数不能是同一类型
- 140 参数和结果不能是同一类型
- 141 此运算符的结果类型无效
- 142 无效参数类型,必须与父 TYPE/CLASS 相同
- 143 重载函数中不允许可变参数参数
- 144 在 OPERATOR 块外非法
- 145 参数不能是可选的
- 146 仅在 -lang 中有效
- 147 默认类型或后缀仅在 -lang 中有效
- 148 后缀仅在 -lang 中有效
- 149 隐式变量仅在 -lang 中有效
- 150 自动变量仅在 -lang 中有效
- 151 无效数组索引
- 152 运算符必须是成员函数
- 153 运算符不能是成员函数
- 154 方法在匿名 UDT 中声明
- 155 常量在匿名 UDT 中声明
- 156 静态变量在匿名 UDT 中声明
- 157 应为运算符
- 158 在原始命名空间或类之外声明
- 159 析构函数不应有任何参数
- 160 应为类或 UDT 标识符
- 161 变长字符串不能是 UNION 或嵌套 TYPE 的一部分
- 162 动态数组不能是 UNION 或嵌套 TYPE 的一部分
- 163 有构造函数的字段不能是 UNION 或嵌套 TYPE 的一部分
- 164 有析构函数的字段不能是 UNION 或嵌套 TYPE 的一部分
- 165 在 CONSTRUCTOR 块外非法
- 166 在 DESTRUCTOR 块外非法
- 167 有方法的 UDT 必须有唯一名称
- 168 父类不是类或 UDT
- 169 CONSTRUCTOR() 链式调用不在构造函数顶部
- 170 BASE() 初始化器不在构造函数顶部
- 171 对有非 CDECL 构造函数的 UDT 执行 REDIM
- 172 对有非 CDECL 析构函数的 UDT 执行 REDIM
- 173 对有非无参默认构造函数的 UDT 执行 REDIM
- 174 对有非 CDECL 构造函数的 UDT 执行 ERASE
- 175 对有非 CDECL 析构函数的 UDT 执行 ERASE
- 176 对有非无参默认构造函数的 UDT 执行 ERASE
- 177 此符号无法被取消定义
- 178 RETURN 与 'FUNCTION =' 或 EXIT FUNCTION 混用(返回有构造函数的对象时不支持同时使用两种风格)
- 179 'FUNCTION =' 或 EXIT FUNCTION 与 RETURN 混用(返回有构造函数的对象时不支持同时使用两种风格)
- 180 缺少 RETURN 来复制构造函数结果
- 181 无效赋值/转换
- 182 无效数组下标
- 183 TYPE 或 CLASS 没有默认构造函数
- 184 函数结果 TYPE 没有默认构造函数
- 185 缺少 BASE() 初始化器(没有默认构造函数的基 UDT 需要手动初始化)
- 186 缺少默认构造函数实现(没有默认构造函数的基 UDT 需要手动初始化)
- 187 缺少 UDT.constructor(byref as UDT) 实现(没有默认构造函数的基 UDT 需要手动初始化)
- 188 缺少 UDT.constructor(byref as const UDT) 实现(没有默认构造函数的基 UDT 需要手动初始化)
- 189 无效优先级属性
- 190 PROPERTY GET 应该没有参数,或者如果是索引属性则只有一个参数
- 191 PROPERTY SET 应该有一个参数,或者如果是索引属性则只有两个参数
- 192 应为 'PROPERTY'
- 193 在 PROPERTY 块外非法
- 194 PROPERTY 没有 GET 方法/访问器
- 195 PROPERTY 没有 SET 方法/访问器
- 196 PROPERTY 没有索引 GET 方法/访问器
- 197 PROPERTY 没有索引 SET 方法/访问器
- 198 缺少重载运算符:
- 199 NEW[] 运算符不允许对构造函数的显式调用
- 200 NEW[] 运算符只支持 { ANY } 初始化
- 201 NEW 运算符不能用于定长字符串
- 202 非法成员访问
- 203 应为 ':'
- 204 默认构造函数没有公共访问权限
- 205 构造函数没有公共访问权限
- 206 析构函数没有公共访问权限
- 207 访问基 UDT 的私有默认构造函数
- 208 访问基 UDT 的私有析构函数
- 209 非法的非静态成员访问
- 210 构造函数声明为 ABSTRACT
- 211 构造函数声明为 VIRTUAL
- 212 析构函数声明为 ABSTRACT
- 213 成员不能是静态的
- 214 成员不是静态的
- 215 只有静态成员可以从静态函数和参数初始化器中访问
- 216 PRIVATE 和 PUBLIC 属性不允许与 REDIM、COMMON 或 EXTERN 一起使用
- 217 此处使用了 STATIC,但 DECLARE 语句中没有
- 218 此处使用了 CONST,但 DECLARE 语句中没有
- 219 此处使用了 VIRTUAL,但 DECLARE 语句中没有
- 220 此处使用了 ABSTRACT,但 DECLARE 语句中没有
- 221 方法声明为 VIRTUAL,但 UDT 未扩展 OBJECT
- 222 方法声明为 ABSTRACT,但 UDT 未扩展 OBJECT
- 223 未覆盖任何虚方法
- 224 为 ABSTRACT 方法提供了实现体
- 225 覆盖的返回类型与被覆盖方法不同
- 226 覆盖的调用约定与被覆盖方法不同
- 227 隐式析构函数覆盖的调用约定不同
- 228 隐式 LET 运算符覆盖的调用约定不同
- 229 覆盖不是像被覆盖方法那样的 CONST 成员
- 230 覆盖是 CONST 成员,但被覆盖方法不是
- 231 覆盖的参数与被覆盖方法不同
- 232 此运算符不能是 STATIC
- 233 此运算符隐式为 STATIC,不能是 VIRTUAL 或 ABSTRACT
- 234 此运算符隐式为 STATIC,不能是 CONST
- 235 参数必须是整数
- 236 参数必须是指针
- 237 应为初始化器
- 238 在包含成员函数的 TYPE 或 CLASS 中,字段不能与关键字同名
- 239 在 FOR 复合语句外非法
- 240 在 DO 复合语句外非法
- 241 在 WHILE 复合语句外非法
- 242 在 SELECT 复合语句外非法
- 243 应为 'FOR'
- 244 应为 'DO'
- 245 应为 'WHILE'
- 246 应为 'SELECT'
- 247 未找到外层 FOR 复合语句
- 248 未找到外层 DO 复合语句
- 249 未找到外层 WHILE 复合语句
- 250 未找到外层 SELECT 复合语句
- 251 应为 'CONSTRUCTOR'、'DESTRUCTOR'、'DO'、'FOR'、'FUNCTION'、'OPERATOR'、'PROPERTY'、'SELECT'、'SUB' 或 'WHILE'
- 252 应为 'DO'、'FOR' 或 'WHILE'
- 253 在 SUB 块外非法
- 254 在 FUNCTION 块外非法
- 255 符号访问有歧义,需要显式作用域解析
- 256 ENUM、TYPE 或 UNION 不能为空
- 257 在 EXTERN .. END EXTERN 块内声明的 ENUM 不会打开新作用域
- 258 在非成员过程上使用 STATIC
- 259 在非成员过程上使用 CONST
- 260 在非成员过程上使用 ABSTRACT
- 261 在非成员过程上使用 VIRTUAL
- 262 无效初始化器
- 263 有默认构造/析构函数或方法的对象只允许在模块级别使用
- 264 嵌套 UDT 中的静态成员变量(只允许在顶层 UDT 中)
- 265 符号不是 CLASS、ENUM、TYPE 或 UNION 类型
- 266 元素太多
- 267 只支持数据成员
- 268 不允许 UNION
- 269 不允许数组
- 270 COMMON 变量不能是有构造/析构函数的 CLASS/TYPE 的对象实例
- 271 克隆运算符(LET、复制构造函数)不能接受父类型的 byval 参数
- 272 本地符号不能被引用
- 273 应为 'PTR' 或 'POINTER'
- 274 指针间接层次太多
- 275 动态数组不能是 const
- 276 const UDT 不能调用非 const 方法
- 277 字符串和数组的元素必须为空
- 278 GOSUB 已禁用,使用 'OPTION GOSUB' 启用
- 279 无效的 -lang
- 280 不能在带省略号边界的数组中使用 ANY 作为初始化器
- 281 带省略号边界的数组必须有初始化器
- 282 不能用 ... 作为下界
- 283 FOR/NEXT 变量名不匹配
- 284 所选选项需要 SSE FPU 模式
- 285 应为关系运算符(=、>、
<、<>、<=、>=) - 286 -gen gcc/clang 模式下不支持该语句
- 287 标签太多
- 288 不支持的函数
- 289 应为 sub
- 290 应为 '#ENDIF'
- 291 为不支持资源文件的目标系统提供了资源文件
- 292 -o
<file>选项没有对应的输入文件 - 293 未扩展 TYPE/UNION(TYPE/UNION 只能扩展其他 TYPE/UNION)
- 294 在 CLASS、TYPE 或 UNION 方法外非法
- 295 CLASS、TYPE 或 UNION 未派生
- 296 CLASS、TYPE 或 UNION 没有构造函数
- 297 符号类型没有运行时类型信息(RTTI)
- 298 类型没有层次关系
- 299 应为 CLASS、TYPE 或 UNION 符号类型
- 300 从不兼容的指针类型转换派生 UDT 指针
- 301 从无关的 UDT 指针类型转换派生 UDT 指针
- 302 将派生 UDT 指针转换为不兼容的指针类型
- 303 将派生 UDT 指针转换为无关的 UDT 指针类型
- 304 ALIAS 名称字符串为空
- 305 LIB 名称字符串为空
- 306 UDT 有未实现的抽象方法
- 307 对 ABSTRACT 方法的非虚调用
- 308 #ASSERT 条件失败
- 309 应为 '>'
- 310 无效大小
- 311 此处的 ALIAS 名称与 DECLARE 原型中的 ALIAS 不匹配
- 312 可变参数参数只允许在 CDECL 过程中
- 313 过程的第一个参数不能是可变参数
- 314 构造函数上使用了 CONST(不需要)
- 315 析构函数上使用了 CONST(不需要)
- 316 Byref 函数结果未设置
- 317 函数外部的函数结果赋值
- 318 byref 函数结果赋值时类型不匹配
- 319 给出了 -asm att|intel 选项,但此目标不支持(仅 x86 或 x86_64)
- 320 引用未初始化
- 321 不兼容的引用初始化器
- 322 引用数组——尚不支持
- 323 无效的 CASE 范围,起始值大于结束值
- 324 定长字符串与 BYREF 组合(不支持)
- 325 非法使用保留符号
- 326 应为 ',' 或 ';'
- 327 应为文件号表达式
- 328 格式错误的 SOURCE_DATE_EPOCH 环境变量
- 329 使用了图形例程,但 gfxlib 尚未移植到此目标
- 330 -fpu sse 选项只能在 x86 和 x86_64 架构上使用
- 331 -fpu neon 选项只能在 arm 架构上使用
- 332 未定义的内置符号
这些错误发生在源代码被编译为汇编之后,来自 FB 编译源代码为可执行文件所需的辅助程序:链接器、汇编器以及(用于 Windows 程序的)资源编译器。
如果使用了 IDE 或 make 工具,还可能出现额外的错误。这些错误超出了本帮助文档的范围。
返回 目录