我正在编写一个不返回任何数据的函数。该程序计算圆柱体的面积和体积。我尝试使用的公式是表面积 = 2π ∗(半径(^2 + 高度∗(2π ∗ 半径(和体积 = π ∗(半径(^2 ∗高度我在设置方程式时遇到问题。我有这个:
surface_area_calc = (2 * PI) ∗ (pow (radius,2)) + height ∗ ((2 * PI) ∗
radius);
volume_calc = PI ∗ (pow (radius,2)) ∗ height;
但我确定这是错误的,因为我在尝试编译程序时遇到错误。 我得到的错误是说"文字和标识符之外不允许使用非 ASCII 字符"。
不要将=
放在宏中
#define PI 3.14159...
使用=
它被复制到代码中
volume_calc = PI ∗ (pow (radius,2)) ∗ height;
成为
volume_calc = = 3.14159 ∗ (pow (radius,2)) ∗ height;
// ^^^^^^^^^
这是一个语法错误。
你有两个选择而不是错误的
#define PI = 3.14159265358979323846
要么坚持使用预处理器宏并执行
#define PI 3.14159265358979323846
或者通过执行以下命令使用const
限定的 C 变量
const double PI = 3.14159265358979323846;
由于代码使用库函数pow()
因此代码应向编译器提供此函数的原型。
这可以通过包含适当的库标头来实现。在这种情况下,请执行以下操作:
#include <math.h>
当编译完成时,告诉链接器实际链接实现math.h
(通常驻留在libm.*
(使用(用于 GCC(选项的库
-lm
(更多 这里(
请注意,当通过编译器控制链接器时,需要在源文件之后指定库,并使用库提供的内容。
gcc main.c -o main -lm
以下最有可能失败
gcc -lm main.c -o main
你在 Linux 中吗?是这样,做:
#include <math.h>
在代码的顶部并使用-lm
进行编译,如下所示:
gcc test.c -o test -lm