我试图用C++创建一个非常简单的程序来计算两个物体之间的引力。所以我想为G声明一个宏,其值等于6。754*10^-11,我用这个:
#define G 6.754e-11.0;
但它产生了大量的杂散错误,如下所示:
cd '~/Desktop/CS/C++/Other PSETS'
g++ gravity.cpp -o gravity
输出:
gravity.cpp:5:28: error: stray ‘\342’ in program
#define G (6.754)*pow(10.0,��11.0);
^
gravity.cpp:10:52: note: in expansion of macro ‘G’
float gforce(float m1,float m2,float r){return G*m1*m2/(r*r);}
^
gravity.cpp:5:29: error: stray ‘\210’ in program
#define G (6.754)*pow(10.0,��11.0);
^
gravity.cpp:10:52: note: in expansion of macro ‘G’
float gforce(float m1,float m2,float r){return G*m1*m2/(r*r);}
^
gravity.cpp:5:30: error: stray ‘\222’ in program
#define G (6.754)*pow(10.0,�11.0);
^
gravity.cpp:10:52: note: in expansion of macro ‘G’
float gforce(float m1,float m2,float r){return G*m1*m2/(r*r);}
因此,我决定使用数学库函数cmath
来使用pow()
,但它仍然没有任何用处。如何创建这样的宏?
- 注意 *:我在Ubuntu上使用G++,如下所示:
g++ --version
输出:
g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1条答案
按热度按时间ht4b089n1#
错误信息
意味着你的程序中包含了一个C语法不允许的字符(从技术上讲,它在“基本源代码字符集”之外)。三位数是问题的数值 byte 的八进制编码。一行中有三个这样的字符,因此有问题的字节序列是
0342 0210 0222
,这是Unicode字符U+2212 MINUS SIGN的UTF-8编码。是的。在C中不允许使用减号。您必须使用U+002 D HYPHEN-MINUSes。
要解决这部分问题,请在编辑器中转到
在减号上用退格键重新键入。这可能是因为你从一个使用花哨(我的意思是“不仅仅是普通的ASCII”)排版的网页或PDF中复制并粘贴了这个数字。
您还需要解决一些其他问题。分号根本不应该出现在那里,因为
#define
在行尾结束。在C++中,浮点文字的指数必须是整数。所以你真正需要的是使用
const
变量也可以说是更好的,因为你不需要宏:(note分号现在已返回)。..但我是个老派的人,不反对用宏来表示数字常量。
这里绝对没有理由使用
pow
。