You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSVC编译C代码遇C2371错误:bgz_error函数重定义求助

问题解决:MSVC下bgz_error重定义错误

核心原因分析

错误提示C2371: 'bgz_error': redefinition; different basic types说明编译器认为bgz_error被定义了两次,且类型不一致。最可能的场景是:

  • 编译器先隐式声明了bgz_error为int类型(C语言中,在函数定义前调用未声明的函数,编译器会默认推断其返回值为int),之后你定义了void类型的同名函数,导致类型冲突。
  • 或者存在宏冲突,某个宏将bgz_error替换成了其他内容,导致编译器识别异常。

解决方案

方案1:显式声明函数原型

在函数定义前添加显式声明,避免编译器隐式推断类型:

// 先声明函数原型
void bgz_error();

void bgz_error() {
    __debugbreak();
}

方案2:限制函数作用域

用static修饰函数,将其作用域限制在当前文件内,避免和其他文件的同名符号冲突:

static void bgz_error() {
    __debugbreak();
}

方案3:消除宏冲突

如果怀疑存在宏重名,在定义函数前先取消可能存在的宏定义:

#undef bgz_error
void bgz_error() {
    __debugbreak();
}

附带的代码错误修正

你的代码里还有几个拼写和语法错误,需要一并修正才能正常编译:

  • ResiterClass → RegisterClass(Windows API函数名拼写错误)
  • WS_MASIMIZEBOX → WS_MAXIMIZEBOX(窗口样式宏拼写错误)
  • NOT → !(C语言无NOT关键字,逻辑非运算符为!)
  • invlid_code_path → invalid_code_path(宏名拼写错误,否则会被编译器当作未知函数调用)

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:39:35