- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在大学学习 C,并为我的软件开发类(class)布置了作业,它是一个应用程序,询问用户他们想要选择哪种形状,询问他们形状的参数,然后输出面积和体积等.在制作我的 make 文件后,我对每个函数都遇到相同的错误,如下所示
gcc -Wall -ggdb -o assignment2 assignment2.c assignment22d.c assignment23d.c
/tmp/ccb5nvtg.o: In function `squarearea':
/home/stephengannon79/assignment22d.c:16: multiple definition of `squarearea'
/tmp/ccBcrWoo.o:/home/stephengannon79/assignment22d.c:16: first defined here
/tmp/ccb5nvtg.o: In function `squareperi':
/home/stephengannon79/assignment22d.c:23: multiple definition of `squareperi'
/tmp/ccBcrWoo.o:/home/stephengannon79/assignment22d.c:23: first defined here
/tmp/ccb5nvtg.o: In function `rectanglearea':
/home/stephengannon79/assignment22d.c:29: multiple definition of `rectanglearea'
/tmp/ccBcrWoo.o:/home/stephengannon79/assignment22d.c:29: first defined here
/tmp/ccb5nvtg.o: In function `rectangleperi':
/home/stephengannon79/assignment22d.c:36: multiple definition of `rectangleperi'
我有一个主文件、2 个用于声明函数的头文件、2 个用于函数本身的 c 文件和一个 make 文件。任何人都可以看到我的错误并指出我正确的方向吗?谢谢,代码全部在下面
// assignment2.c
//author: Stephen Gannon
//date: 09/11/19
//id: 18240313
/* Purpose: The purpose of this assignment is to use modular programing
to write an application that calculates parameters of a shape such
as area, volume and perimeter depending on user inputed values for sizing.
The application contains a main file, two header files to calculate
for each dimension and a make file for compilation.
*/
#include <stdio.h>
#include <stdlib.h>
#include "assignment22d.h"
#include "assignment23d.h"
#include "assignment22d.c"
#include "assignment23d.c"
int main()
{
char option; //expression to choose between the 2d and 3d shapes
double sqside; //squares side
double sqarea; //square area
double sqperi; //sqaure perimeter
double reclength; //rectangles lentgth
double recwidth; //rectangles width
double recarea; //rectangle area
double recperi; //rectangle perimeter
double circrad; //circles radius
double circarea; //circles area
double circcirc; //circles circumference
double trib; //triangles base length
double trih; //triangles perpendicular height
double tria; //traingles side a
double tric; //triangles side c
double triarea; //triangle area
double triperi; //triangle perimeter
double parab; //parallelograms base
double parah; //parallelograms perpendicular height
double paraa; // parallelograms side a
double paraarea; //parallelogram area
double paraperi; //parallelogram perimeter
double cubeside; //cubes side
double cubearea1; //cube area
double cubevolume; //cube volume
double recprisl; //rectangular prism length
double recprish; //rectangular prism height
double recprisw; //rectangular prism width
double recprisarea; //rectangular prism area
double recprisvolume; //rectangular prism volume
double sphrad; //spheres radius
double spharea; //spheres area
double sphvolume; //spheres volume
double rccr; //right circular cylinder radius
double rcch; //right circular cylinder height
double rccarea; //right circular cylinder area
double rccvol; //right circular cylinder volume
printf("Please choose an object:\na-sqaure\nb-rectangle\nc-circle\nd-triangle\ne-parallelogram\nf-cube\ng-rectangular prism\nh-sphere\ni-right circular cylinder\n-----------------------------\n");
scanf("%c", &option); //scans in the value of option
switch(option) //switch cases, the shapes are lettered a to i
{
case 'a': //square
printf("Please enter the length of the side:\n");
scanf("%lf", &sqside);
sqarea = squarearea(sqside);
printf("The squares area is: %lf\n", sqarea);
sqperi = squareperi(sqside);
printf("The squares perimeter is: %lf\n", sqperi);
break;
case 'b': //rectangle
printf("Please enter the length and width:\n");
scanf("%lf %lf", &reclength, &recwidth);
recarea = rectanglearea(reclength, recwidth);
printf("The rectangles area is: %lf\n", recarea);
recperi = rectangleperi(reclength, recwidth);
printf("The rectangles perimeter is: %lf\n", recperi);
break;
case 'c': //circle
printf("Please enter the radius:\n");
scanf("%lf", &circrad);
circarea = circlearea(circrad);
printf("The circles area is: %lf\n", circarea);
circcirc = circlecirc(circrad);
printf("The circles circumference is: %lf\n", circcirc);
break;
case 'd': //triangle
printf("Please enter the base length, height and other sides a and c:\n");
scanf("%lf %lf %lf %lf", &trib, &trih, &tria, &tric);
triarea = trianglearea(trib, trih, tria, tric);
printf("The triangles area is: %lf\n", triarea);
triperi = triangleperi(trib, trih, tria, tric);
printf("The triangles perimeter is: %lf\n", triperi);
break;
case 'e': //parallelogram
printf("Please enter the base, height and side a:\n");
scanf("%lf %lf %lf", ¶b, ¶h, ¶a);
paraarea = parallelogramarea(parab, parah, paraa);
printf("The parallelograms area is: %lf\n", paraarea);
paraperi = parallelogramperi(parab, parah, paraa);
printf("The parallelograms perimeter is: %lf\n", paraperi);
break;
case 'f': //cube
printf("Please enter the length of the side:\n");
scanf("%lf", &cubeside);
cubearea1 = cubearea(cubeside);
printf("The cubes area is: %lf\n", cubearea1);
cubevolume = cubevol(cubeside);
printf("The cubes volume is: %lf\n", cubevolume);
break;
case 'g': //rectangular prism
printf("Please enter the length, height and width:\n");
scanf("%lf %lf %lf", &recprisl, &recprish, &recprisw);
recprisarea = rectangularprismarea(recprisl, recprish, recprisw);
printf("The rectangular prisms area is: %lf\n", recprisarea);
recprisvolume = rectangularprismvol(recprisl, recprish, recprisw);
printf("The rectangular prisms volume is: %lf\n", recprisvolume);
break;
case 'h': //sphere
printf("Please enter the radius:\n");
scanf("%lf", &sphrad);
spharea = spherearea(sphrad);
printf("The spheres area is: %lf\n", spharea);
sphvolume = spherevol(sphrad);
printf("The spheres volume is: %lf\n", sphvolume);
break;
case 'i': //right circular cyclinder
printf("Please enter the radius and height:\n");
scanf("%lf %lf", &rccr, &rcch);
rccarea = rightcylarea(rccr, rcch);
printf("The right circular cylinders area is: %lf\n", rccarea);
rccvol = rightcylvol(rccr, rcch);
printf("The right circular cylinders volume is: %lf\n", rccvol);
break;
case '\n':
break;
default: //handles if any value other than a to i is inputted
printf("Error! The value you entered is incorrect!\n");
}
return 0;
}
#ifndef HEADER_FILE2D
#define HEADER_FILE2D
double squarearea(double sqside); //declaring square area function
double squareperi(double sqside); //declaring square perimeter function
double rectanglearea(double reclength, double recwidth); //declaring rectangle area function
double rectangleperi(double reclength, double recwidth); //declaring rectangle perimeter function
double circlearea(double circrad); //declaring circle area function
double circlecirc(double circrad); //declaring circle circumference function
double trianglearea(double trib, double trih, double tria, double tric); //declaring triangle area function
double triangleperi(double trib, double trih, double tria, double tric); //declaring triangle perimeter function
double parallelogramarea(double parab, double parah, double paraa); //declaring parellelogram area function
double parallelogramperi(double parab, double parah, double paraa); //declaring parellelogram perimeter function
#endif
//assignment22d.c
//author: Stephen Gannon
//date: 10/11/19
//id: 18240313
/* Purpose: A file that contains all the functions necessary to
calculate the peramteres for the 2d shapes, as well as a defined Pi.
*/
#ifndef assignment22d
#define assignment22d
#define Pi 3.141593
#define circarea(circrad) (Pi)*(circrad*circrad)
#define circcirc(circrad) 2*(Pi)*circrad
double squarearea(double sqside)
{
double sarea; //squares area
sarea = sqside*sqside;
return sarea;
}
double squareperi(double sqside)
{
double speri; //square perimeter
speri = 4*sqside;
return speri;
}
double rectanglearea(double reclength, double recwidth)
{
double rarea; //rectangles area
rarea = reclength*recwidth;
return rarea;
}
double rectangleperi(double reclength, double recwidth)
{
double rperi; //rectangles perimeter
rperi = (2*reclength)+(2*recwidth);
return rperi;
}
double circlearea(double circrad)
{
double carea; //circles area
carea = circarea(circrad);
return carea;
}
double circlecirc(double circrad)
{
double cperi; //circles perimeter
cperi = circcirc(circrad);
return cperi;
}
double trianglearea(double trib, double trih, double tria, double tric)
{
double tarea=0; //triangles area
tarea = (trib*trih)/2;
return tarea;
}
double triangleperi(double trib, double trih, double tria, double tric)
{
double tperi; //triangles perimeter
tperi = trib+tria+tric;
return tperi;
}
double parallelogramarea(double parab, double parah, double paraa)
{
double parea=0; //parallelograms area
parea = parab*parah;
return parea;
}
double parallelogramperi(double parab, double parah, double paraa)
{
double pperi; //parallelograms perimeter
pperi = (2*paraa)+(2*parab);
return pperi;
}
#endif
//assignment23d.h
//author: Stephen Gannon
//date: 15/11/19
//purpose: To declare the functions for all 3d shapes
#ifndef HEADER_FILE3D
#define HEADER_FILE3D
double cubearea(double cubeside); //declaring cube area function
double cubevol(double cubeside); //declaring cube volume function
double rectangularprismarea(double recprisl, double recprish, double recprisw); //declaring rectangular prisms area function
double rectangularprismvol(double recprisl, double recprish, double recprisw); //declaring rectangle prisms volume function
double spherearea(double sphrad); //declaring spheres area function
double spherevolume(double sphrad); //declaring circle circumference function
double rightcylarea(double rccr, double rcch); //declaring cylinder area function
double rightcylvol(double rccr, double rcch); //declaring cylinder volume function
#endif
//assignment23d.c
//author: Stephen Gannon
//date: 11/11/19
//id: 18240313
/* Purpose: A header file that contains all the functions necessary to
calculate the peramteres for the 3d shapes, as well as a defined Pi.
*/
#ifndef assignment23dHead
#define assignment23dHead
#define Pi 3.141593
#define csarea(cubeside) 6*(cubeside*cubeside)
#define cvolume(cubeside) (cubeside*cubeside*cubeside)
double cubearea(double cubeside)
{
double cuarea; //cubes area
cuarea = csarea(cubeside);
return cuarea;
}
double cubevol(double cubeside)
{
double cuvol; //cubes volume
cuvol = cvolume(cubeside);
return cuvol;
}
double rectangularprismarea(double recprisl, double recprish, double recprisw)
{
double recprisarea; //rectangular prisms surface area
recprisarea = (2*recprisl*recprisw)+(2*recprisl*recprish)+(2*recprisw*recprish);
return recprisarea;
}
double rectangularprismvol(double recprisl, double recprish, double recprisw)
{
double recprisvol; //rectangular prisms volume
recprisvol = recprisl*recprisw*recprish;
return recprisvol;
}
double spherearea(double sphrad)
{
double spherearea; //spheres surface area
spherearea = 4*Pi*(sphrad*sphrad);
return spherearea;
}
double spherevol(double sphrad)
{
double spherevol; //spheres volume
spherevol = (4*Pi*(sphrad*sphrad*sphrad))/3;
return spherevol;
}
double rightcylarea(double rccr, double rcch)
{
double cylinderarea; //right circular cylinders surface area
cylinderarea = (2*Pi*rccr*rcch)+(2*Pi*(rccr*rccr));
return cylinderarea;
}
double rightcylvol(double rccr, double rcch)
{
double cylindervol; //right circular cylinders volume
cylindervol = Pi*rcch*(rccr*rccr);
return cylindervol;
}
#endif
assignment2: assignment2.c assignment22d.c assignment23d.c assignment22d.h assignment23d.h
gcc -Wall -ggdb -o assignment2 assignment2.c assignment22d.c assignment23d.c
最佳答案
您将 .c 文件与头文件一起包含在内,这会导致函数有多个定义。替换这个
#include "assignment22d.h"
#include "assignment23d.h"
#include "assignment22d.c"
#include "assignment23d.c"
有了这个
#include "assignment22d.h"
#include "assignment23d.h"
关于c - 函数的多个定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890603/
在complier.h中有一个宏定义如下: # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) 但是这里我有一个问题,就是哪里
curl_easy_setopt 的选项在哪里?定义?我试图寻找 CURLOPT_VERBOSE 和其他一些整数值,但这些似乎没有在 curl.h 中明确定义。 最佳答案 第 792 行: #ifde
我确实有一个如下所示的类(class): //.h file class __declspec(dllimport) MyClass { public: //stuff pri
作者: zhuwenzhuang, 2024.05.08. 阅读前假设读者熟悉数据库使用,了解 SQL 的语法和关系算子的大概含义, 能通过 EXPLAIN 命令查看数据库执行计划. 0 前言
我似乎无法找到是否可以声明一个 header 对象以便在响应 header 中重用它,有一些示例定义了响应模式的对象,但它不会转置为响应 header 。我只设法制作了一个可重用的响应对象,如下所示:
css 选择器 * + * 实际上是什么意思?当您执行检查元素时,您可以在谷歌浏览器的控制台中看到它。在我看来,这似乎是对 "Every second child"应用一种风格,但仍然想确定。谁能帮我
我试图弄清楚基本的IO Haskell 函数是定义好的,所以我使用了this reference我到了putChar函数定义: putChar :: Char -> IO () putChar
我得到了一个自动生成的文件,该文件定义了程序集属性,我正在尝试理解内容。 [assembly: global::System.Runtime.Versioning.TargetFrameworkAtt
This文档演示了如何检查变量是否先前已在 gnuplot 脚本中定义。 文档中的示例: a = 10 if (exists("a")) print "a is defined" if (!exist
好吧,这是一个相当基本的问题:我正在关注 SICP 视频,我对 define、let 和 之间的区别有点困惑设置!. 1) 根据 Sussman 在视频中的说法,define 只允许为变量附加一个值一
我一直在尝试定义一个包含只能具有以下三个值之一的字段的 XSD: 绿色 红色 蓝色 本质上,我想在架构级别定义严格的枚举。 我的第一次尝试似乎是错误的,我不确定修复它的“正确”方法。
有人可以定义“POCO”到底是什么意思吗?我越来越频繁地遇到这个术语,我想知道它是否仅与普通类有关还是意味着更多? 最佳答案 “普通旧式 C# 对象” 只是一个普通的类,没有描述基础结构问题或域对象不
在我经常看到的一些django模型中 myfield = models.CharField(_('myfield')) class_name = models.CharField(_('Type'),
每当 BOOL 数据类型不容易预定义时,我都会使用以下定义进行 boolean 运算, typedef unsigned char BOOL; (由于内存使用)。 我意识到出于性能原因,使用本地总线宽
l_ABC_BEANVector = utilRemote.fnGetVector("ABC_COVBEANVector"); 编码的含义是什么?任何帮助,我真的很感激。谢谢 最佳答案 唯一可以肯定地
我正在使用 javacc 开发一个项目,我遇到问题并需要一些帮助,我的文件中有这样的内容: STRING COPYRIGHT (C) 2003, 2004 SYNOPSYS, INC.; 我为单词 S
我想弄清楚基本的 IO定义了 Haskell 函数,所以我使用了 this reference然后我到了 putChar函数定义: putChar :: Char -> IO () putCha
我在具体类中使用 @property 定义 getter 时遇到问题。这是Python代码: from abc import ABCMeta, abstractproperty class abstr
我正在为大学用 C 语言编写一个小游戏,但我陷入了困境。我(在头文件中)有这个结构: typedef struct{ game_element field[MAX_ROWS][MAX_COLU
我一直在 .l 文件中创建标记定义。由于数据集数量庞大,它变得有点乏味。有没有办法读取文件中的所有单词,例如包含所有名词的 noun.txt 并给所有名词一个标记。 基本上,我想自动化这部分: %%
我是一名优秀的程序员,十分优秀!