标签: cl

IEEE 754:带有 fesetround() 的 sqrtf():编译器之间的不同结果:0x42440a72 与 0x42440a73

#include <stdio.h>
#include <stdint.h>
#include <fenv.h>
#include <math.h>

int main()
{
    typedef union { uint32_t u; float f; } ufloat;
    ufloat val;
    float arg = 2401.999999;
    int r;
    r = fesetround(FE_DOWNWARD);
    val.f = sqrtf(arg);
    printf ("FE_DOWNWARD   %22.13a [0x%x] %d\n", val.f, val.u, r);
    r = fesetround(FE_TONEAREST);
    val.f = sqrtf(arg);
    printf ("FE_TONEAREST  %22.13a [0x%x] %d\n", val.f, val.u, r);
    r = fesetround(FE_TOWARDZERO);
    val.f = sqrtf(arg);
    printf ("FE_TOWARDZERO %22.13a [0x%x] %d\n", val.f, val.u, r);
    r = fesetround(FE_UPWARD);
    val.f = sqrtf(arg);
    printf ("FE_UPWARD     %22.13a [0x%x] …
Run Code Online (Sandbox Code Playgroud)

c floating-point rounding ieee-754 cl

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

强制SCons在64位Windows上使用32位MSVC编译器

我正在尝试使用clVisual Studio 2010来构建32位版本的Mixxx.Mixxx使用SCons构建.我的计算机是Windows 7 64位,安装了太多版本的Visual Studio.

下面这些说明,我已经尝试了组合的各种和变化setenv以及vsvars但是不管我做什么,我结束了在这种情况下,在命令行:

> cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]
Run Code Online (Sandbox Code Playgroud)

好的,所以cl指向"版本16,x86" - 太棒了.

> scons toolchain=msvs force32=1 winlib=%cd%\winlib\x86 sqlitedll=0 staticlibs=1 asmlib=0

[... bunch of output truncated, until we start using the compiler ...]

cl /Fores\qrc_mixxx.obj /c res\qrc_mixxx.cc /TP /Zc:wchar_t- /GL /MP /fp:fast …
Run Code Online (Sandbox Code Playgroud)

scons cl

6
推荐指数
2
解决办法
3693
查看次数

如何使用 x64 运行 cl?

我遇到了与这里相同的问题fatal error C1034: windows.h: no include path set

我输入vcvars32.bat并解决了我的问题,但我想链接一些 64 位 .lib 文件,当我这样做时:

cl main.cpp xxxlib.lib
Run Code Online (Sandbox Code Playgroud)

我得到:

warning LNK4272: library machine type 'x64' conflict with target machine type 'x86'
Run Code Online (Sandbox Code Playgroud)

是不是因为我用的vcvars32.bat是32位的?在哪里可以找到 64 位版本?

谢谢

c++ batch-file visual-c++ cl

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

术语:“CL”与“MSVC 编译器”相同吗

我很难弄清楚命令行工具是否cl.exe就是人们在谈论“MSVC 编译器”时所指的那个工具。

两者是同一件事还是使用 cl 来控制编译器?

visual-c++ cl

6
推荐指数
0
解决办法
1171
查看次数

与朋友一起而不是向前声明的类:哪个编译器正确

我有这个简单的C ++程序:

#include <iostream>

struct obj {
  friend int f(int);

  void m(int x) { std::cout << "f(" << x << ") = " << f(x) << std::endl; }
};

int main() {
  obj o;
  o.m(21);
}


int f(int x) {
  return 2*x;
}
Run Code Online (Sandbox Code Playgroud)

如果我使用GNU C ++编译器进行编译g++则会收到错误prog.cpp:7:55:错误:未在此范围内声明'f'

但是,如果我使用cl(和/W4)对其进行编译,则它将编译并执行良好。

我不确定哪个编译器正确。

c++ gcc cl

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

有没有办法将 Developer Powershell for VS 2019 添加为 VSCode 中的集成终端?

我正在开发一个项目,需要我使用 MSVC 编译 C++ 代码,但我主要使用 VSCode。因此,我想知道是否有办法将 Developer Powershell 添加为集成终端,以便我可以在不需要打开辅助终端的情况下进行编译。我想直接从 Developer PS 本身打开 VSCode,但由于这主要是一个临时项目,因此看起来像是很多重复性工作。我尝试使用Shell launcherVSCode 的扩展,但它不起作用。有什么我可以做的吗?

powershell cmd visual-c++ cl visual-studio-code

6
推荐指数
2
解决办法
4263
查看次数

已安装 Visual Studio 2022,但“cl”未被识别为内部或外部命令

我的 Windows 10 终端均无法将 cl 识别为“内部或外部命令”。
我安装了 Visual Studio 2022,并在每个终端上进行了尝试,包括“开始”菜单下 Visual Studio 2022 中的终端。

我已经尝试过 Stack Overflow 的其他解决方案。我尝试将 cl 环境变量设置为"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\Hostx86\x86\cl.exe"
Visual Studio 2022 中的“修改”下,选中并安装了“使用 C++ 进行桌面开发”和“通用 Windows 平台开发”框。

我知道这个问题还有其他答案,但 Visual Studio 2022 似乎有另一个解决方案。

c++ windows visual-studio cl

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

使用 cl/gcc/clang 的默认结构包装是什么?

在 msdn for cl 编译器选项 /Zp 上,提到“在 8 字节边界(默认)上打包结构”。这是否意味着如果数据类型的大小 > 8 字节,默认情况下(没有编译器选项或编译指示包)它不会自然对齐,而是具有 8 字节对齐。如果是,GCC/clang 是这种情况吗?

我检查了 GCC,使用-fpack-struct__uint128_t,它没有任何这样的默认值。例如sizeof(tStruct)是 32 和 24:

struct tStruct {
uint64_t    a;
__uint128_t b;
};
Run Code Online (Sandbox Code Playgroud)

我无法在 Windows 上进行检查,因为它不提供任何大于 8 字节的数据类型。

c++ gcc visual-c++ cl struct-member-alignment

5
推荐指数
0
解决办法
1839
查看次数

Cobra:如何在测试中以编程方式设置标志

我正在使用cobra构建 CLI 并希望模拟使用不同选项/标志集运行的命令。我一直试图弄清楚如何使用眼镜蛇 API 在我的测试中设置标志,但还没有真正得到它。

我有这个:

// NewFooCmd returns a cobra.Command fitted to print output to the buffer for easier testing.
buf := &bytes.Buffer{}
cmd := package.NewFooCmd(buf)

cmd.Execute()

// some validations on the content of buf
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的最接近的是:

cmd.Flags().Set(name string, value string)

...但这似乎不正确,因为虽然标志的名称都是字符串,但它们并不都将字符串作为值。此外,即使我有intflag 和 pass ,它似乎也不起作用string(1)

我在这里遗漏了一些简单的东西吗?

testing go cobra cl go-cobra

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

使用 Ninja 作为生成器和 cl-clang 作为编译器使用 Cmake 构建 C++

类似的问题以前曾被问过,但我在链接过程中遇到了一个尚未解决的问题,因此我在这里提出一个新问题。

\n

我的目标是使用 Windows 命令行编译一些 C++ 代码cl-clang,并且我想使用 ninja 作为 CMake 生成器。我目前正在尝试编译一个简单的 hello-world 程序。我的目录如下所示:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.bat\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.cpp\n
Run Code Online (Sandbox Code Playgroud)\n

为了使设置更简单,我使用以下命令配置 cmakesetup.bat文件配置 cmake:

\n
@ECHO OFF\nif not exist "build\\" mkdir build\\\ncd build\ncall "C:\\Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/vcvarsall.bat" x86\nset CC=clang-cl.exe\nset CXX=clang-cl.exe\ncmake -G Ninja ..\n
Run Code Online (Sandbox Code Playgroud)\n

和这个CMakeLists.txt

\n
cmake_minimum_required(VERSION 3.17.0)\nproject(ClangNinja)\nenable_language(C CXX)\n\nadd_executable(foo_bar src/main.cpp)\n
Run Code Online (Sandbox Code Playgroud)\n

cmake 设置似乎工作正常,输出如下:

\n
**********************************************************************\n** Visual Studio 2019 Developer Command Prompt v16.8.3\n** Copyright (c) 2020 Microsoft Corporation\n**********************************************************************\n[vcvarsall.bat] Environment initialized for: 'x86'\n-- The C …
Run Code Online (Sandbox Code Playgroud)

c++ windows cmake clang cl

5
推荐指数
0
解决办法
2773
查看次数