我正在翻译一个旧项目,在面向对象编程之前编写成为常见的东西,我有很多全局变量.这是一个用Pascal编写的项目,我尝试用现代的c ++ 11方式重写它,并尝试尽可能地实现最大的可移植性.
我的目的是让项目易于为其他人修改.我的问题是我现在在Visual Studio中得到了很多LNK2019错误,因为这些变量没有很好地声明.
问题是我有一些充满全局变量的头文件
bool DS_Flag_0;
...
bool DS_Flag_11;
Run Code Online (Sandbox Code Playgroud)
和
typedef unsigned short int UInt16;
//...
const UInt16 DayManth;
const UInt16 DayYear;
const UInt16 DayLongYear;
const UInt16 DayPer;
const int SecMin;
const double SecQuart;
const double SecClock;
const double SecHalfDay;
const double SecDay;
const double SecWeek;
const double SecYear;
const double SecPer;
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式在我的项目中使用几乎所有可能的文件中的所有这些变量.(是的,这是一个非常糟糕的设计项目,但我没有那么多时间从头开始重建它......)
我看到了一些选项:
该项目的目的是将大量卫星消息从二进制文件数据转换为另一种二进制格式,我首先需要让它使用这些数据(但这个信息并不是回答这个问题所必需的).
更新:更确切地说,我在名称空间为"Prm"和"Prm_BinDS"的文件中有很多变量.
我有文件"Prm_IDD_VAR.h","Prm_BinDS_MayUnit_Data.h"和"Prm_IDD_VAR.h",它们都共享"Prm"命名空间.存在类型为"bool"的变量,具有"UInt16,float,double和unsigned char"类型的结构,单个无符号字符,浮点数,双精度甚至std :: string和所有这些类型的数组.
namespace Prm {
bool GPS_FlagL1[33];
...
bool Gali_FlagL3[51];
//...
}
Run Code Online (Sandbox Code Playgroud)
所有这些变量都必须在extern".cpp"中初始化,我也想让它们具有初始值.当它们被声明时,这也可能以某种方式将它们初始化为全零吗?(我听说如果我使用'static' - 除了声明它们的文件外,我不能在任何地方使用我的全局变量
我正在使用Visual Studio 2015并使用std :: libraries创建一些项目,以及"nullptr","initializer list"和"auto"关键字等c ++ 11功能.我还使用"stdafx"预编译头.我使用的std :: components是:<vector>, <string>, <chrono>, <stdio>, <iomanip>, <iostream>, <fstream>, <strsafe>, <math.h>, <thread>, <mutex>, <ctime>
我将在不久的将来为其他人(可能不使用VS2015)提供我的.h和.cpp代码,并且有一些问题:
1)在我开始向他们提供我的代码之前,我应该准备什么?
2)如果希望我的代码在未来的Linux环境(使用QtCreator)中正常工作,我应该记住什么?
3)我提到的这些库,如果我使用它们并且我希望我的代码可以移植到Linux和Windows版本的QtCreator C++ 11环境,那么这一切都可以(兼容&&可移植)?
4)什么可能是错的,我还应该记在脑海里?
问题是我实际上可以通过 Windows CMD 访问 C:\Program Files\nodejs\node.exe,例如:node -v:
C:\Users\User>node -v
v16.13.0
Run Code Online (Sandbox Code Playgroud)
但 Visual Studio Code(已安装 Node.js 扩展包)无法识别终端中的节点。我所能发现的就是:
node : The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
Run Code Online (Sandbox Code Playgroud)