CLion中main.cpp无法识别tests.h里的pracProgDriver函数求助
问题分析与解决
核心错误:参数类型不匹配
你的pracProgDriver声明要求传入一个无参数、无返回值的函数(本质是函数指针),但在main函数里调用pracProgDriver(ch5PracProg1());时,ch5PracProg1()是直接执行该函数,传入的是它的返回值,而非函数本身,这就导致了参数类型完全不匹配,编译器才会提示"No matching function for call to 'pracProgDriver'"。
两种修正方向
方向1:让pracProgDriver接收并执行目标函数
修改tests.h里的函数声明为明确的函数指针形式:
void pracProgDriver(void (*function)());
同时修改main函数里的调用,传入函数名(不要加括号,括号代表执行函数):
pracProgDriver(ch5PracProg1);
方向2:让pracProgDriver接收ch5PracProg1()的返回值
如果你的需求本来就是传入ch5PracProg1执行后的结果,那需要修改pracProgDriver的参数类型,匹配ch5PracProg1的返回值类型。比如假设ch5PracProg1返回int,声明就改成:
void pracProgDriver(int result);
关于头文件识别的误解
你提到main能识别ch5PracProg1但识别不了pracProgDriver,其实不是编译器找不到pracProgDriver函数,而是它找不到参数类型匹配的函数重载。你可以检查tests.h是否添加了头文件保护(比如#ifndef TESTS_H/#define TESTS_H/#endif)避免重复包含,但核心问题还是参数类型不匹配。
内容的提问来源于stack exchange,提问作者Stoyan T
相关产品推荐
相关产品推荐

