小编Iva*_*kin的帖子

是否出现“命令行参数不足异常”?

如果我编写的程序需要超过 2 个命令行参数并且用户给它的参数数量不足,我应该抛出什么异常?我想使用集成的异常处理。

c#

2
推荐指数
1
解决办法
3163
查看次数

避免使用大量全局变量或使其易于访问和修改的最佳方法

我正在翻译一个旧项目,在面向对象编程之前编写成为常见的东西,我有很多全局变量.这是一个用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)

我需要以某种方式在我的项目中使用几乎所有可能的文件中的所有这些变量.(是的,这是一个非常糟糕的设计项目,但我没有那么多时间从头开始重建它......)

我看到了一些选项:

  1. 使用"extern"修饰符并创建大量".cpp"初始化文件,因为我还需要初始化它们
  2. 以某种方式使(可能)在".h"标题内初始化它们成为可能.如果我想让项目对其他人可读,那么这是一个很好的编程实践吗?
  3. 也许我可以在某种程度上实现面向对象的模式,以避免很多变量并使其更现代化,是吗?

该项目的目的是将大量卫星消息从二进制文件数据转换为另一种二进制格式,我首先需要让它使用这些数据(但这个信息并不是回答这个问题所必需的).

更新:更确切地说,我在名称空间为"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' - 除了声明它们的文件外,我不能在任何地方使用我的全局变量

c++ c++11

1
推荐指数
1
解决办法
415
查看次数

Visual Studio 2015 <=> QtCreator 5(c ++)代码可移植性

我正在使用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)什么可能是错的,我还应该记在脑海里?

c++ qt-creator c++11 visual-studio-2015

1
推荐指数
1
解决办法
81
查看次数

VSCode 终端:术语“节点”未被识别为 cmdlet 的名称

问题是我实际上可以通过 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 扩展包)无法识别终端中的节点。我所能发现的就是:

  1. 我应该将 nodejs 文件夹包含在我的 PATH 变量中(已经完成)并且
  2. 重新启动我的电脑
  3. 重新启动IDE。
  • 所有三个步骤都已完成,但 VSCode 仍然无法识别终端中的“node”命令。
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)

windows cmd node.js visual-studio-code

1
推荐指数
1
解决办法
1万
查看次数