冲突的类型和先前的 x 声明在这里......什么?

2023-12-31

当我有时间的时候,我已经自学了几个月的 C 语言,但我遇到了一个我不知道如何解决的问题。

具体来说,当我尝试使用 gcc 编译它时,我得到:



geometry.c:8: error: conflicting types for ‘trapezoid’
geometry.c:7: note: previous declaration of ‘trapezoid’ was here
geometry.c:48: error: conflicting types for ‘trapezoid’
geometry.c:7: note: previous declaration of ‘trapezoid’ was here
geometry.c:119: error: conflicting types for ‘trapezoid_area’
geometry.c:59: note: previous implicit declaration of ‘trapezoid_area’ was here
geometry.c: In function ‘cone_volume’:
geometry.c:128: error: called object ‘3.14100000000000001421085471520200371742248535156e+0’ is not a function
geometry.c: In function ‘cylinder_volume’:
geometry.c:136: error: called object ‘3.14100000000000001421085471520200371742248535156e+0’ is not a function
  

现在,我想我可能需要对函数进行类型转换,但我再次不确定。

看起来它想要将 PI(我将其定义为 3.141)读取为函数。有没有办法可以避免使用幻数 3.141(尽管它比其他幻数要少得多)?

//Geometric formulae
#include <stdio.h>
#include <math.h>

#define PI 3.141

float trapezoid(float b1, float b2, float h);
int trapezoid();
float sphere_volume(float r);
int sphere();
float cone_volume(float r, float h);
int cone();
float pyramid_volume(float b, float h);
int pyramid();
float cylinder_volume(float r, float h);
int cylinder();

int main(void) {
        char selection = 0;

        while(selection != 'q') {
                printf("\t--Geometric Formulas--\n");
                printf("\tSelection an option from the menu: ");
                scanf("%c", & selection);
                switch(selection) {
                        case 1: //Trapezoid area
                                printf("%d", trapezoid());
                                break;
                        case 2: //Sphere volume
                                printf("%d", sphere());
                                break;
                        case 3: //Cone volume
                                printf("%d", cone());
                                break;
                        case 4: //Pyramid volume
                                printf("%d", pyramid());
                                break;
                        case 5: //Cylinder volume
                                printf("%d", cylinder());
                                break;
                        default:
                                break;
                }
        }
}
//      --Shape Menus--
//Trapezoid
int trapezoid() {
        float h = 0, b1 = 0, b2 = 0;
        float traparea;

        printf("\tTrapezoid base 1: ");
        scanf("%3f", &b1);
        printf("\tTrapezoid base 2: ");
        scanf("%3f", &b2);
        printf("\tTrapezoid height: ");
        scanf("%3f", &b2);

        traparea = trapezoid_area(b1, b2, h);

        printf("\tTrapezoid Area: %3f\n", traparea); }

//Sphere
int sphere() {
        float r = 0;
        float spherevol;

        printf("\tSphere radius: ");
        scanf("%f", &r);

        spherevol = sphere_volume(r);

        printf("\tSphere volume: %3f\n", spherevol); }

//Cone
int cone() {
        float r = 0, h = 0;
        float conevol;

        printf("\tCone radius: ");
        scanf("%f", &r);
        printf("\tCone height: ");
        scanf("%f", &h);

        conevol = cone_volume(r, h);

        printf("\tCone volume: %3f\n", conevol); }

//Pyramid
int pyramid() {
        float b = 0, h = 0;
        float pyramidvol;

        printf("\tPyramid base: ");
        scanf("%f", &b);
        printf("\tPyramid height: ");
        scanf("%f", &h);

        pyramidvol = pyramid_volume(b, h);

        printf("\tPyramid volume: %3f\n", pyramidvol); }

//Cylinder
int cylinder() {
        float r = 0, h = 0;
        float cylindervol;

        printf("\tCylinder radius: ");
        scanf("%f", &r);
        printf("\tCylinder height: ");
        scanf("%f", &h);

        cylindervol = cylinder_volume(r, h);

        printf("Cylinder volume: %3f", cylindervol); }

//      --Geometric Formulas--
//Trapezoid Area Computation
float trapezoid_area(float b1, float b2, float h) {
        return ((b1 + b2) * h) / 2; }

//Sphere Volume Computation
float sphere_volume(float r) {
        return ((pow(r,3)) * (4 * PI)) / 3; }

//Cone Volume Computatioin
float cone_volume(float r, float h) {
        return ((PI(pow(r,2)) * h)) / 3; }

//Pyramid Volume Computation
float pyramid_volume(float b, float h) {
        return (b * h) / 3; }

//Cylinder Volume Computation
float cylinder_volume(float r, float h) {
        return (PI(pow(r,2))) * h; }

他们中的任何人都说存在“隐式”定义:这可以通过预先声明来解决。例如,您预先声明了浮动梯形 and 整型梯形,但你没有预先声明梯形面积。正如其他人指出的那样,您也不能像在 C++ 中那样在 C 中重载。

在某些领域,您尝试进行隐式乘法——例如,PI(幂(r,2))应该PI * (pow(r,2)).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

冲突的类型和先前的 x 声明在这里......什么? 的相关文章

  • 在 Vulkan 中,图形队列系列与当前队列系列分离是否有益?

    据我所知 队列系列可能支持呈现到屏幕但不支持图形 假设我有一个同时支持图形和呈现的队列系列 以及另一个仅支持呈现的队列系列 我应该为两个进程使用第一个队列系列 还是应该将第一个队列系列委托给图形 将后者委托给呈现 或者这两种方法之间没有明显
  • VLC 媒体播放器有 C# 界面吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以使用 C 控制台应用程序中的包装器从 VLC 播放中当前播放的文件中读取曲目统计信息 时间 标
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 条件类型定义

    如果我有一小段这样的代码 template
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 对于 C# Express 用户来说,有哪些好的工具可以识别可能重复的代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也可以看看 有什么工具可以检查重复的 VB NET 代码吗 https stackoverflow c
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • .Net Reactive Extensions Framework (Rx) 是否考虑拓扑顺序?

    Net 反应式扩展框架是否按拓扑顺序传播通知以最大限度地减少更新量 就像 Scala Rx 所做的那样 Net 反应式扩展 Rx 是否可以 https github com lihaoyi scala rx wiki How it Work

随机推荐

  • 使用 Redirect_To 时 Rails 3 通知不起作用

    我有一些代码 我有一个 通知 它只是有选择地显示 这是代码 respond to do format if userhj save format html redirect to action gt index notice gt Succ
  • Angular 2 变更事件 - 模型变更

    模型更改后如何获取值 这 change 事件确实在模型更改之前触发 我不想使用event target value
  • 如何在CSS中实现曲线背景? [复制]

    这个问题在这里已经有答案了 我有一个带有曲线背景的登陆页面 请参考下图 我想知道从 CSS 编码时的最佳方法 我还需要使其具有响应性 并且我使用 bootstrap 作为 CSS 框架 以下是我所做的 我使用了 SVG 图像作为背景 并将其
  • 如何使用 objc_getAssociatedObject/objc_setAssociatedObject 存储非 id 类型变量?

    我使用一个类别和一些存储在 UIView 中的变量 但只存储 id 类型 所以我真的不想要 id 类型 int float double char 等等 代码怎么写 import
  • Svg 在 Firefox 和 Edge 上显示不同

    我在处理中间有数字的 svg 图像时遇到一些问题 使用 Chrome 和其他浏览器时显示正确 但在 Firefox 和 Edge 中数字位置错误 Link https i stack imgur com VkvEJ png 这是我的代码 m
  • 拒绝应用样式,因为其 MIME 类型('application/json')不受支持

    我想使用fullcalendar库 使用gulp和yarn这是生成的链接标签 但我在控制台中收到此错误 拒绝应用样式 http localhost bower components fullcalendar dist fullcalenda
  • F#:没有 UI(如 WPF)吗?

    我最近在 F 上看到了一些视频 看来它主要用于服务或仅用于类 我在 VS2010 Beta 中没有看到 F WPF 应用程序 F 实际上有一些非常好的构造用于创建事件驱动的 UI 应用程序 例如头等舱活动 http blogs msdn c
  • 小黄瓜场景应该始终有“何时”步骤吗?

    在 Gherkin 中定义场景时 有时 Given 和 When 步骤之间没有明显区别 即用户没有与系统进行主动交互 验证的目的是验证系统在某些情况下应如何显示 考虑以下 Scenario Show current balance Give
  • ClickOnce 应用程序不接受命令行参数

    我有一个采用命令行参数的 VB NET 应用程序 如果我关闭 Visual Studio 的 ClickOnce 安全设置 调试时它可以正常工作 当我尝试通过 ClickOnce 在计算机上安装应用程序并尝试使用参数运行它时 会出现此问题
  • 为什么装饰器是一种结构性设计模式而不是行为性设计模式?

    我认为自己拥有 GoF 设计模式的中级知识 然而 当我将这些模式分类为结构模式和行为模式时 我感到很困惑 我对创造模式没有任何困惑 来自维基百科 装饰器模式 在面向对象编程中 装饰器模式是一种允许behavior静态或动态地添加到单个对象
  • Haskell有foldlM'吗?

    如何严格折叠 monad Data Foldable http www haskell org ghc docs 6 12 2 html libraries base 4 2 0 1 Data Foldable html有严格的foldl
  • REBOL 中的 If...else if...else

    我注意到 REBOL 没有内置if elsif else语法 就像这样 theVar 60 This won t work if theVar gt 60 print Greater than 60 elsif theVar 3 print
  • 如何仅使用 CSS 制作网格(如方格纸网格)?

    如何仅使用 CSS 制作网格 如方格纸网格 我只想仅使用 CSS 制作一张虚拟网格纸 要制作网格 您可以使用 CSS 渐变 它适用于所有现代浏览器 参见卡尼乌斯 http caniuse com search linear gradient
  • 如何调用自定义函数作为 jQuery 函数链的一部分

    这似乎是一件很简单的事情 但我找不到jQuery函数来处理这个问题 例如 div show sayHi function sayHi obj obj html hi sayHi 不是一个jQuery函数 因此不能在此上下文中调用它 你需要这
  • 不使用 Javascript 从 Google 地图获取路线和方向?

    因此 如果您正在编写一个应用程序 而不是网站 并且需要解析从一个位置到另一个位置的路线 那么如何在不使用 Javascript 的情况下从 Google 地图获取信息呢 我想知道 Google 地图上是否有任何一组特殊的 URL 或 API
  • 找不到盒子“laravel/homestead”

    我已经下载了laravel homestead手动装箱here https atlas hashicorp com laravel boxes homestead 我成功添加了盒子 vagrant box add file path to
  • 在 Bash 中,有没有办法在双引号中将变量展开两次?

    为了调试我的脚本 我想在每个输出的开头添加内部变量 FUNCNAME 和 LINENO 这样我就知道输出发生在哪个函数和行号上 foo local bar something echo FUNCNAME LINENO I just set
  • Pyinstaller 设置图标不改变

    当我使用命令时 pyinstaller exe icon test ico F noconsole test py 所有图标均不会更改为 test ico 一些图标保留为 pyinstaller 的默认图标 Why 所有图标均更改为 视窗
  • 使用字母间距填充div

    我遇到的问题是填写div与文本使用letter spacing 主要问题是我不知道宽度div 首先我想使用 text align justify 但从那以后我一直在黑暗中奔跑 不知道如何解决这个问题 我猜想一些脚本魔法可能会解决这个问题 一
  • 冲突的类型和先前的 x 声明在这里......什么?

    当我有时间的时候 我已经自学了几个月的 C 语言 但我遇到了一个我不知道如何解决的问题 具体来说 当我尝试使用 gcc 编译它时 我得到 geometry c 8 error conflicting types for trapezoid