小编Mar*_*ort的帖子

为什么只有函数指针而不是函数变量?

在C/C++中,我们可以声明/定义一个类型的函数指针,然后声明/定义这个类型的一些变量。但我认为这是模棱两可的。

例如:

typedef void ( *pFunc )();
// typedef void ( aFunc )();
void theFunc() {
   cout << "theFunc has been called successfully." << endl;
};

int main() {
   pFunc pf0 = theFunc;
   pFunc pf1 = &theFunc;

   pf0();
   ( *pf0 )();
   pf1();
   ( *pf1 )();
};
Run Code Online (Sandbox Code Playgroud)

理论上,只有pFunc pf1 = &theFunc;(*pf1)();是合法的,但以上都可以通过编译。

Pascal语法中,我们需要分别定义函数的vars或函数指针的vars,它们的含义是不同的,而且更加清晰(至少我是这么认为的)!

此外,我们不能声明/定义函数的变量而不是函数指针的变量!我尝试了以下并失败了。

typedef void ( aFunc )();
aFunc af0 = theFunc;
Run Code Online (Sandbox Code Playgroud)

如果使用其他类型,例如 int/double,则有非常严格的语法限制我们正确使用它们。(如果int*与 不同int,为什么*pf0与 相同pf0?!) …

c++ typedef function-pointers function

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

命名空间字符串中的程序集

有没有办法从命名空间字符串中获取程序集名称?例如,从"系统"获取"mscorlib".

我的问题的原因是我正在逐个方法地创建Boo脚本,并且需要以编程方式添加命名空间.Boo中的结果字符串将显示为:

import System from mscorlib
Run Code Online (Sandbox Code Playgroud)

我显然可以传入一组导入字符串,但是如果我只能传递一个引用列表,那么它的可扩展性会更高!

非常感谢

c# reflection namespaces

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

使用windows(XP +)api发送(串行)中断

是否有更好的方法来发送串行中断然后是setcommbreak - delay - clearcommbreak序列?

我必须与一个微控制器通信,该微控制器使用串行中断作为115k2上数据包的开始,而setcommbreak有两个问题:

  • 115k2,突破远低于1ms,它将获得时间关键.

  • 由于中断必须嵌入在正确位置的数据包流中,我预计fifo会出现问题.

有没有更好的方法来做到这一点,而没有将串行通信移动到没有fifo的线程?UART通常为16550+

我可以选择微控制器设置可以切换(其他固件)为更常规的数据包格式,但手册警告说,"中断"方式具有串行硬件完整性检查功能.

编译器是Delphi(2009/XE),但欢迎使用任何代码或甚至只是参考.

microcontroller winapi serial-port break

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

使用D2009 +进行OEM到ansi的转换

对于Unicode版专家:

是否可以定义反映当前OEM编码的ansistring类型?

(假设没有代码页标识符的ansistring反映了ansi代码页)

这是半个笑话问题,有一半是严重的:

它会将CRT单元的端口大大简化为Unicode(使其更好并键入)

delphi

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

如何在 Rust 中正确设置泛型集合类型

我正在尝试在 FreeBSD 12 下测试 Rust 1.39 中的一些语言功能,与 Free Pascal 3.0.4 相比,以使用字符串键寻址的 2D 点的简单通用点集合。不幸的是,泛型类型声明的代码没有在很早的状态下编译并停止:

error[E0106]: missing lifetime specifier
  --> src/main.rs:11:31
   |
11 |     type TPointMap = BTreeMap<&TString, TPoint>;
   |     
Run Code Online (Sandbox Code Playgroud)

我该如何重写 Rust 代码?

细节:

为了测试语言行为,我用 Rust 和 Pascal 编写了两个小程序,以“语法上”处理相同的上下文。Pascal 程序是一个简单的声明:

  1. 一些普通类型、记录类型和通用地图容器,
  2. 这将被用来定义一个点,将这个点存储在一个新分配的地图中,
  3. 通过键搜索点并将数据写入 STDIO
  4. 最后释放地图。
program test;
uses fgl; { Use the free pascal generics library }
type
   TDouble   = Double; { Define a 64 bit float } 
   TString   = String; { Define a string type  } 
   TPoint    = record  { Define …
Run Code Online (Sandbox Code Playgroud)

generics rust

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

如何找出另一个程序集的ProductName属性?

我有两个程序集A.exe和B.exe.两者都是Windows.Forms .net 3.5程序集.A.exe知道B.exe在同一目录中.

如何从A.exe中找到B.exe 的ProductName

.net c# reflection

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

CPP中的链接类

我目前发现的主要问题是“初始化指针”。

在 Pascal 中,您所要做的就是声明NEW(POINTER). 在 C++ 中,我迷路了——如果我错了,请纠正我——你必须声明一个“虚拟”变量才能启动一个指针。

让我这样说:我想构建一个由指针链接的类。在 Pascal 中,我所要做的就是为类添加一个指针,我称之为next,与它嵌套在其中的类型相同。

我如何在 C++ 中做到这一点?

c++ pointers initializing

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