小编Mat*_*een的帖子

无法在Linux上编译C++代码,但可以在Mac OS上编译

对于我正在研究的项目,我想尝试以下程序:http: //sourceforge.net/projects/tirg/

它由两个C++文件组成,但我无法在运行Linux的笔记本电脑上进行编译,而在我的朋友运行Mac OS的笔记本电脑上编译没有任何问题.我没有任何编译C++代码的经验,因此可能是初学者的错误.

运行Mac OS的笔记本电脑设法编译代码没有问题使用以下g ++版本:

i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Run Code Online (Sandbox Code Playgroud)

我尝试在运行Arch LInux(64位)的笔记本电脑上使用gcc,g ++,clang和clang ++编译C++文件,其中包含以下版本:

gcc and g++ (GCC) 4.8.1 20130725 (prerelease)
clang version 3.3 (tags/RELEASE_33/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

编译时得到的错误是:

/usr/include/c++/4.8.1/bits/stl_vector.h:1240:36: error: no matching function for call to ‘std::vector<std::vector<unsigned char> >::_M_fill_assign(int&, int&)’
         { _M_fill_assign(__n, __val); }
                                    ^
Run Code Online (Sandbox Code Playgroud)

这是由这行代码引起的:

std::vector<std::vector<trg::Rgb> > a(300, 255);
Run Code Online (Sandbox Code Playgroud)

我已将汇编的完整输出放在pastebin上:http: //pastebin.com/m285PSrH

我在编译OpenCV时也遇到了问题,因此我的配置可能有问题.我认为这是版本问题,例如标准库的错误版本.

希望有更多C++经验的人可以指出可能出错的地方.谢谢!

c++ linux compiler-errors compilation

5
推荐指数
2
解决办法
1270
查看次数

如何配置 VSCode 以运行 Yarn 2(使用 PnP)驱动的 TypeScript

如何配置 VSCode 以运行 Yarn 2(使用 PnP)驱动的 TypeScript

我喜欢使用 Yarn 2(带 PnP),几个月前我设置了一个运行良好的项目。现在我尝试设置一个新项目,但无论我尝试什么,我都无法让 VSCode 正确解析模块。旧项目仍然有效并且我的测试用例在其中正常工作,因此它必须是新项目而不是问题所在的 VSCode。

我的新项目设置如下:

mkdir my-project
cd my-project
npm install -g npm
npm install -g yarn
yarn set version berry
yarn init
yarn add --dev @types/node typescript ts-node prettier
yarn dlx @yarnpkg/pnpify --sdk vscode
cat <<'EOF' > tsconfig.json
{
  "compilerOptions": {
    "types": [
      "node"
    ]
  }
}
EOF
mkdir src
cat <<'EOF' > src/test.ts
process.once("SIGINT", () => process.exit(0));
EOF
Run Code Online (Sandbox Code Playgroud)

我确实在 StackExchange 和其他地方检查过类似的问题,但他们归结为pnpify在 VSCode 中运行和选择 TypeScript 版本作为其工作台-pnpify …

typescript visual-studio-code vscode-settings yarn-v2

5
推荐指数
4
解决办法
2457
查看次数

为什么 TypeScript 不缩小数组类型?

为什么 TypeScript 不缩小数组类型?

function test(input: (string | number)[]): string[] {
  // The type of .map(...) reports that it returns string[].
  input = input.map(x => x.toString())
  // Type error: Type '(string | number)[]' is not assignable to type 'string[]'.
  return input
}
Run Code Online (Sandbox Code Playgroud)

解决方法并不依赖于通过立即使用或分配给新变量来缩小类型:

function test(input: (string | number)[]): string[] {
  return input.map(x => x.toString())
}

function test(input: (string | number)[]): string[] {
  const newInput = input.map(x => x.toString())
  return newInput
}
Run Code Online (Sandbox Code Playgroud)

我确实尝试过强制转换,但事后看来,这显然只适用于使用,例如return input as string[],并且不会缩小类型,因为.map(...)已经返回了正确缩小的类型。

必须执行这些解决方法对我来说感觉违反直觉。为什么 …

narrowing typescript

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