c - 编译成功,但 VS 显示红色波浪线。C中具有不同参数的函数指针
问题描述
我正在使用带有 VisualGDB 的 Visual Studio 2019 社区为基于嵌入式 ARM 的项目 (STM32) 编写“C”。VisualGDB 显示其错误报告使用默认的 gnu11 标准。
编辑:我让这段代码更完整了一点:
typedef int(*CMD_Type)();
int CMD_0() { return 0; }
int CMD_1(float val) { return 1; }
int CMD_2(float val1, float val2) { return 2; }
int DoSomething ()
{
CMD_Type c = CMD_1;
if (c == CMD_2)
{
return c(1, 2);
}
}
我在“==”下得到红色曲线,表示它Cannot apply binary '==' to <anonymous> (*)()> and <anonymous>(*)(int)
当我用两个参数调用它时,我也会在两个参数下得到红色的波浪c
线:函数有零个参数,但被调用>有两个。
这编译没有错误并且有效。
我的理解是,即使CMD_Type
类型定义为指向返回整数且不接受任何参数的函数的指针,它也只是指向函数的指针,并且任何参数都会被推送到堆上,因此可以正常工作。所以我明白为什么编译器/智能感知在抱怨。
- 这个可以吗?
- 如果它仍然编译,我可以关闭这个警告吗?
仅供参考:我继承了这段代码:)。
任何帮助,将不胜感激。
谢谢-埃德
解决方案
推荐阅读
- reactjs - 在一个域中托管 React 应用程序和 Wordpress
- python - 从列表中的项目创建字典
- apache-nifi - 如何为 NiFi CLI 配置“代理用户请求”
- javascript - 在 location.href 上多次刷新页面
- javascript - 创建字符串数组会导致修改值
- javascript - 为什么这些图标显示在 Chrome 上而不显示在 Safari 上?
- python - 如何连接三个不同的表并删除重复的行?
- javascript - 从数组中删除一个元素,即在一个对象内
- c++ - 计算数组 C++ 中特定字符的出现次数
- java - Flutter 错误:运行 Gradle 找不到 JAR