0

我知道这startup_info是一个指向STARTUPINFO结构的指针

我有一个函数,我通过引用将 startup_info 传递给它。所以我们可以说我通过引用传递了一个指针

void cp(....., LPSTARTUPINFO & startup_info) {
  CreateProcessW(....., startup_info);
}

让我们假设我在这个函数 caller() 中调用了函数 cp

void caller() {
  STARTUPINFO startup_info; 
  cp(....., startup_info); // error occurs here, I cannot convert 'STARTUPINFO' to 'LPSTARTUPINFO &'
}

它会给我错误消息: CreateProcessW 中的错误:无法将参数 9 从 'STARTUPINFO' 转换为 'LPSTARTUPINFO &'

但是由于 statup_info 是一个指针,我应该能够将它传递给函数 cp 对吧?

编辑:感谢您的建议,但以下内容对我有用: LPSTARTUPINFO是指向STARTUPINFO结构的指针

所以我改为

void cp(....., LPSTARTUPINFO startup_info_ptr) {
      CreateProcessW(....., startup_info_ptr); // pass in pointer of startup_info
}

void caller() {
      STARTUPINFO startup_info; 
      cp(....., &startup_info); // passing the address of startup_info
}
4

1 回答 1

2

你有两个startup_info。在caller()中,它是一个STARTUPINFO(不是指针)。在cp()中,它是一个STARTUPINFO*&(对指针的引用)。为什么?这很可能是无意的。

我希望:

void cp(....., STARTUPINFO* pStartup_info) {
  CreateProcessW(....., pStartup_info);
}
void caller() {
  STARTUPINFO startup_info; 
  cp(....., &startup_info);
}

在生产代码中,我避免p使用指针前缀,但我在这里使用它来消除startup_info您所拥有的两个 's 的歧义。

于 2011-09-27T07:49:18.113 回答