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

Clang编译无原型函数时因参数类型引发冲突的问题咨询

Clang函数声明与定义的编译冲突问题

在Clang(包括AppleClang 1400.0.29.202和Homebrew安装的clang 15.0.7)中遇到了奇怪的编译现象。现有代码如下:

int bar();

int bar(int a, TEST b) {
    return 43;
}

使用-DTEST=int编译可通过,但使用-DTEST=char编译时会报错conflicting types for 'bar',且该现象不受指定标准影响(已测试c89和c99)。

我是否忽略了某些细节?

编辑1:
清楚省略函数原型的做法不被推荐,本人也不会编写此类代码,但现有大量遗留代码采用该写法。今早编译enscript时遇到了此问题。

此外,以下代码使用-DTEST=char可正常编译:

int bar();

int bar(a, b)
    int a;
    TEST b;
{
    return 43;
}

编辑2:
本该先尝试其他编译器再提问。GCC的输出中包含关于参数提升的提示,翻译如下:

注意:带有默认提升的参数类型无法匹配空参数列表声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:25:33