我试图创建一个非常简单的程序来计算C++中两个对象之间的引力,所以我想为G声明一个宏,其值等于6.754*10 ^ -11,我用它 -
#define G 6.754e-11.0;
Run Code Online (Sandbox Code Playgroud)
但是它产生了很多杂散错误,如下所示 -
aalpanigrahi@aalpanigrahi:~/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);}
Run Code Online (Sandbox Code Playgroud)
所以,我决定使用数学库函数cmath进行使用pow(),但它仍然没用.我该怎么做才能创建这样一个宏?
注 - 我在Ubuntu上使用G ++,如下所示 -
aalpanigrahi@aalpanigrahi:~/Desktop/CS/C++/Other PSETS$ 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.
Run Code Online (Sandbox Code Playgroud)
错误消息
stray ‘\342’ in program
Run Code Online (Sandbox Code Playgroud)
表示您的程序包含C++语法不允许的字符(从技术上讲,它在"基本源字符集"之外).三位数字是问题字节数值的八进制编码.你有三个连续的,所以有问题的字节序列是0342 0210 0222,这是Unicode字符U + 2212 MINUS SIGN的UTF-8编码.
没错,你不允许在C++中使用减号.你必须使用U + 002D HYPHEN-MINUSes.
要解决问题的这一部分,请在编辑器中转到该行
#define G 6.754e-11.0;
Run Code Online (Sandbox Code Playgroud)
在减号上退格并重新键入.这可能是因为您复制并粘贴了网页或使用花式的PDF(我的意思是"不仅仅是普通的ASCII")排版.
您仍然需要解决其他一些问题.那个分号根本不应该存在,因为#defines在行尾结束.并且C++中浮点字面值的指数必须是整数.所以你真正应该拥有的是
#define G 6.754e-11
Run Code Online (Sandbox Code Playgroud)
使用const变量也可以说更好,因为您不需要宏:
const double G = 6.754e-11;
Run Code Online (Sandbox Code Playgroud)
(注意分号现在已经返回了)...但是我老了,不能反对使用宏来表示数字常量.
绝对没有理由在pow这里使用.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |