VS Code中出现“too many arguments to function”错误,CodeBlocks无此问题
问题分析与解决
你的代码存在两个关键问题,这是VS Code中触发报错的核心原因,CodeBlocks因编译器默认配置更宽松未报错:
函数声明与调用不匹配
开头的void sayHi();是C语言旧式函数声明,仅说明函数返回void但未指定参数列表。而你调用时传入了字符串参数"Mery",在严格编译标准下,这种声明与调用的不匹配会被判定为错误。重复定义同名函数
C语言不支持函数重载,你同时定义了两个sayHi函数(一个带参数、一个无参数),属于非法重复定义,严格编译器会直接报错。
修正后的代码
#include <stdio.h> // 必须包含stdio.h才能使用printf // 声明与实际定义匹配的函数 void sayHi(char name[]); int main () { sayHi("Mery"); return 0; } // 保留实际需要的函数定义 void sayHi(char name[]) { printf("Hello %s.", name); }
IDE表现差异原因
- CodeBlocks默认编译配置可能采用较旧C标准(如C89),或未开启严格错误检查,对旧式声明、重复定义仅发警告而非错误。
- VS Code的编译配置(通常通过tasks.json设置)可能开启了
-Wall、-Werror等严格检查选项,将这类潜在问题直接判定为错误,强制修正代码。
内容的提问来源于stack exchange,提问作者Esravei
相关产品推荐
相关产品推荐

