#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) 我正在尝试使用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) 我遇到了与这里相同的问题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 位版本?
谢谢
我很难弄清楚命令行工具是否cl.exe就是人们在谈论“MSVC 编译器”时所指的那个工具。
两者是同一件事还是使用 cl 来控制编译器?
我有这个简单的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)对其进行编译,则它将编译并执行良好。
我不确定哪个编译器正确。
我正在开发一个项目,需要我使用 MSVC 编译 C++ 代码,但我主要使用 VSCode。因此,我想知道是否有办法将 Developer Powershell 添加为集成终端,以便我可以在不需要打开辅助终端的情况下进行编译。我想直接从 Developer PS 本身打开 VSCode,但由于这主要是一个临时项目,因此看起来像是很多重复性工作。我尝试使用Shell launcherVSCode 的扩展,但它不起作用。有什么我可以做的吗?
我的 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 似乎有另一个解决方案。
在 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 字节的数据类型。
我正在使用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)。
我在这里遗漏了一些简单的东西吗?
类似的问题以前曾被问过,但我在链接过程中遇到了一个尚未解决的问题,因此我在这里提出一个新问题。
\n我的目标是使用 Windows 命令行编译一些 C++ 代码cl-clang,并且我想使用 ninja 作为 CMake 生成器。我目前正在尝试编译一个简单的 hello-world 程序。我的目录如下所示:
.\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\nRun Code Online (Sandbox Code Playgroud)\n为了使设置更简单,我使用以下命令配置 cmakesetup.bat文件配置 cmake:
@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 ..\nRun Code Online (Sandbox Code Playgroud)\n和这个CMakeLists.txt:
cmake_minimum_required(VERSION 3.17.0)\nproject(ClangNinja)\nenable_language(C CXX)\n\nadd_executable(foo_bar src/main.cpp)\nRun Code Online (Sandbox Code Playgroud)\ncmake 设置似乎工作正常,输出如下:
\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)