小编Toy*_*der的帖子

Windows下的MSVCRT是否像*nix下的glibc(libc)?

我经常遇到与程序可执行文件捆绑在一起的MSVCRT(或更新的等价物)的Windows程序.在典型的PC上,我会找到相同.DLL的许多副本.我的理解是MSVCRT是C运行时库,有点类似于*nix下的glibc/libc.so.

为什么Windows程序必须随身携带他们的C库,而不是仅仅共享系统范围的libc?


更新:感谢Shog9,我开始阅读有关SxS的内容,这进一步让我了解了DLL链接问题(DLL Hell) - http://blogs.msdn.com/b/martynl/archive/2005/10/ 13/480880.aspx是一个有用的介绍问题...

libc msvcrt

21
推荐指数
3
解决办法
7051
查看次数

低级/嵌入式系统难以为软件开发人员编程吗?

鉴于我作为通才的背景,我可以涵盖从模拟电子学到编写与RDBMS后端接口的简单应用程序的大部分领域.

我目前在一家开发硬件以解决行业特定问题的公司工作.我们有一位经验丰富的程序员,他们已经编写了商业应用程序,视频游戏以及其他一些用于PC的东西.但当我与他谈论做低级编程时,他同时表达了对加入该项目的兴趣和怀疑/不确定性.

即使谈论PC,他在语言层面的操作似乎比低层的东西(指令集,ISR)更舒服.尽管如此,他还是个聪明人,我认为一旦他完成了最初的学习困境,他就会很享受这项工作.但也许这是我对低级别话题的热情......如果他真的感兴趣,也许他已经开始在那个方向学习东西了?

您是否有过制作软件到硬件(或低级软件)过渡的经验?或者,更好的是,只选择一个软件,并将他转换为低级别的东西?

编辑:

PS我很想听听响应者他们自己的背景是什么 - EE,CS,两者?

hardware embedded firmware

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

什么压缩/存档格式支持文件间压缩?

关于归档PDF的这个问题让我感到疑惑 - 如果我想压缩(出于存档目的)许多文件,这些文件基本上是在主模板(信头)之上进行的小改动,看起来可以获得巨大的压缩增益文件间压缩.

是否有任何标准压缩/存档格式支持此功能?AFAIK,所有流行的格式都专注于压缩每个文件.

compression archive

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

你如何处理C++/CLI中的句柄?

我知道我也不是在问这个问题.请帮我更好地形成我的问题.

我有点困难让我的思绪缠绕在手柄上 - 在某些方面,它看起来像指针.但与指针不同,似乎我可以直接将值赋给handle变量,它会影响底层数据值,而不是句柄本身.

测试代码清楚地表明,无论是否使用句柄,我都得到相同的值,或者如果我"取消引用"句柄来获取数据.显然,这不适用于非托管指针.我不明白的是什么?

#include <iostream>

int main()
{

  int ^y;
  int ^a, ^b, ^c;
  long x;

   y= gcnew int(100);
   a=y;
   b=y;
   c=y;

   c= gcnew int(200);
   b= 300;

   System::Console::WriteLine(y); // returns 100 (instead of something pointer-like)
   System::Console::WriteLine(*y); // also returns 100

   System::Console::WriteLine(a); // 100
   System::Console::WriteLine(b); // 300
   System::Console::WriteLine(c); // 200 

   x = static_cast<long>(y);
   *y = 10;

   System::Console::WriteLine(x); // 10
   System::Console::WriteLine(y); // 10
   System::Console::WriteLine(*y); // 10

  }
Run Code Online (Sandbox Code Playgroud)

编辑添加 - 我怀疑WirteLine可能已经为我做了解除引用,但我原本预计静态强制转换不会.这与autounboxing有关吗?

c++-cli

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

如果编译器对指针到函数的支持被破坏,我该如何编写调度程序?

我正在开发一个嵌入式应用程序,通过命令界面控制设备.我嘲笑VC中的指挥调度员,让我满意; 但是当我将代码移到嵌入式环境中时,我发现编译器的指针到func的实现方式已经破碎了.

这是我最初实现代码的方式(在VC中):

/* Relevant parts of header file  */
typedef struct command {
  const char *code;
  void *set_dispatcher;
  void *get_dispatcher;
  const char *_description;
} command_t;

#define COMMAND_ENTRY(label,dispatcher,description) {(const char*)label, &set_##dispatcher, &get_##dispatcher, (const char*)description} 


/* Dispatcher data structure in the C file */
const command_t commands[] = {
  COMMAND_ENTRY("DH", Dhcp, "DHCP (0=off, 1=on)"),
  COMMAND_ENTRY("IP", Ip, "IP Address (192.168.1.205)"),
  COMMAND_ENTRY("SM", Subnet, "Subunet Mask (255.255.255.0)"),
  COMMAND_ENTRY("DR", DefaultRoute, "Default router (192.168.1.1)"),
  COMMAND_ENTRY("UN", Username, "Web username"),
  COMMAND_ENTRY("PW", Password, "Web password"),
  ...
}


/* After …
Run Code Online (Sandbox Code Playgroud)

c function-pointers dispatcher

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