clang++ 相关问题

clang是一个C,C ++和Objective-C编译器,它包含预处理,解析,优化,代码生成,汇编和链接。根据传递的高级模式设置,Clang将在执行完整链接之前停止。虽然Clang是高度集成的,但了解编译的各个阶段,了解如何调用它是很重要的。

哪个编译器是正确的,如何通过修改朋友声明来解决它;

回答 1 投票 0

为什么clang ++链接到GCC?

我有一个简单的“ Hello,World”样式程序,我在FreeBSD上与Clang ++一起编译:

回答 2 投票 0

指定包括LLVM构建的目录路径

试图设置LLVM构建的包含目录路径 你好, 我正在尝试使用SNMALLOC分配器构建LLVM,并且根据CMAKE选项和说明,我设置了llvm_integrated_crt_alloc fla ...

回答 1 投票 0

在每项功能的基础上持续clang中的快速记忆?

GCC提供了一种选择性优化代码的功能/部分的方法 使用属性快速做。有没有办法在带有布拉格斯/属性的情况下启用相同的方法? 我知道Clang提供

回答 2 投票 0

插第错误的无需内部陈述警告?

Clang++(17.0.1)给出了此代码的警告: #include<< "fun\n"; } } // namespace template 名称空间{ void Fun() { std :: cout clang++(17.0.1)给出了此代码的警告:#include <iostream> namespace { void fun () { std::cout << "fun\n"; } } // namespace template<class T> void tfun (T) { fun(); } template<> void tfun (int); 如果不在匿名名称空间内,警告就会消失。 这是一个编译器错误? 请参阅Godbolt 这是一个令人讨厌的错误,但根据编译器(而不是编译器错误IMHO)仍然是一个错误。 从编译器POV,如果未启动模板函数fun,则该函数tfun在任何地方都不会使用。像fun都不在那里。 可能的修复方法是将模板进行tfun模板和实施,只有在实现fun时进行实例。这不是我喜欢的“修复”,但我不能更好地提出任何东西。 here是可编译的代码块: tfun

回答 1 投票 0

用std ::ranges

我的同事端口一个C ++程序,其中MACOS上的范围是范围,并观察出意外的汇编错误。 最大简化后,示例程序如下所示:

回答 1 投票 0

我无法理解我在这个简单的测试项目中使用C ++ 20模块(可用

# CMakeList.txt cmake_minimum_required (VERSION 3.29) project (ModulesGoogleTest LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) add_executable(mgtest) target_sources(mgtest PUBLIC main.cpp ) target_sources(mgtest PUBLIC FILE_SET mgtest_modules TYPE CXX_MODULES FILES sample.cppm sample.cpp) target_compile_features(mgtest PUBLIC cxx_std_23)

回答 0 投票 0

在 C++ 中模拟 if __name__ == __main__ 会导致错误“未定义类似函数的宏”

我正在用 bash 编写一个简单的构建文件,这应该让我可以通过模拟 Python 来轻松切换入口点 如果 __name__ == '__main__': 主要的() 我的想法是通过

回答 3 投票 0

为什么boost::beast::http::async_write的token为as_tuple(deferred)的结果不能转换为awaitable<tuple<error_code, size_t>>?

Clang 告诉我,从带有完成标记 boost::asio::as_tuple(boost::asio::deferred) 的 boost::beast::http::async_write 的返回值到可等待的转换没有可行的转换 Clang 告诉我,从带有完成标记 boost::beast::http::async_write 的 boost::asio::as_tuple(boost::asio::deferred) 的返回值到 awaitable<tuple<boost::system::error_code, unsigned long>> 之间没有可行的转换: error: no viable conversion from returned value of type 'decltype(enable_if_t<enable_if_t<detail::are_completion_signatures<void (error_code, unsigned long)>::value, detail::async_result_has_initiate_memfn<as_tuple_t<deferred_t>, void (error_code, unsigned long)>>::value, async_result<decay_t<as_tuple_t<deferred_t>>, void (error_code, unsigned long)>>::initiate(static_cast<boost::beast::http::detail::run_write_msg_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp>> &&>(initiation), static_cast<boost::asio::as_tuple_t<boost::asio::deferred_t> &&>(token), static_cast<const boost::beast::http::message<false, boost::beast::http::basic_string_body<char>> *&&>(args), static_cast<std::integral_constant<bool, true> &&>(args)))' (aka 'deferred_async_operation<void (std::tuple<boost::system::error_code, unsigned long>), boost::asio::async_result<boost::asio::as_tuple_t<boost::asio::deferred_t>, void (boost::system::error_code, unsigned long)>::init_wrapper<boost::beast::http::detail::run_write_msg_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::any_io_executor>>>, const boost::beast::http::message<false, boost::beast::http::basic_string_body<char, std::char_traits<char>, std::allocator<char>>, boost::beast::http::basic_fields<std::allocator<char>>> *, std::integral_constant<bool, true>>') to function return type 'boost::asio::awaitable<std::tuple<boost::system::error_code, std::size_t>>' (aka 'awaitable<tuple<boost::system::error_code, unsigned long>>') 179 |return boost::beast::http::async_write(stream, typed_message, boost::asio::as_tuple(boost::asio::deferred)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 所讨论的函数如下所示: template<typename stream_t> boost::asio::awaitable<void> response_worker(boost::asio::experimental::channel<void(boost::system::error_code, http_response_t)> &channel, stream_t &stream) { while (true) { boost::system::error_code ec; std::variant< boost::beast::http::response<boost::beast::http::string_body>, boost::beast::http::response<boost::beast::http::empty_body>, boost::beast::http::response<boost::beast::http::dynamic_body>, boost::beast::http::response<boost::beast::http::file_body>, boost::beast::http::response<boost::beast::http::buffer_body>> message = co_await channel.async_receive(boost::asio::redirect_error(boost::asio::deferred, ec)); if (ec == boost::asio::error::eof) { channel.close(); co_return; } const auto [ec2, transferred] = co_await std::visit( [&stream](auto &typed_message) -> boost::asio::awaitable<std::tuple<boost::system::error_code, std::size_t>> { return boost::beast::http::async_write(stream, typed_message, boost::asio::as_tuple(boost::asio::deferred)); }, message); //error handling } } 这用于编译,我对错误消息感到非常困惑,我的代码中是否有错误,或者我的 clang 安装是否比我想象的更糟糕(libclang 没有正确获取标头搜索意味着我必须添加-I/usr/lib/clang/19/include 作为编译器标志(如果我理解正确的话)? 读取编译器消息: error: no viable conversion from returned value of type 'decltype(...)` (aka deferred_async_operation< void(std::tuple<boost::system::error_code, unsigned long>), asio::async_result<asio::as_tuple_t<asio::deferred_t>, void(boost::system::error_code, unsigned long)>:: init_wrapper<http::detail::run_write_msg_op< asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>>>, http::message< false, http::basic_string_body<char, std::char_traits<char>, std::allocator<char>>, http::basic_fields<std::allocator<char>>> const*, std::integral_constant<bool, true>>' ) to function return type 'asio::awaitable<std::tuple<boost::system::error_code, std::size_t>>' return http::async_write(stream, typed_message, asio::as_tuple(asio::deferred)); 看起来您可能已从 asio::use_awaitable(确实返回可等待的 Promise 类型)更改为 asio::deferred(这导致延迟的异步操作)。 这很好,因为 deferred 成为默认完成令牌 从 Asio 协程框架(可等待的 Promise 类型)内部调用(“转换”)时,deferred 会产生更少的开销 这意味着您必须“等待”延迟操作才能获得兼容的返回类型。另请注意,最近的 Asio 版本包含了令牌适配器的部分应用程序,因此您可以像这样拼写它: 住在Coliru while (true) { if (auto [ec, message] = co_await channel.async_receive(asio::as_tuple); ec == asio::error::eof) { co_return channel.close(); } else if (auto [ec, transferred] = co_await std::visit( [&](auto& typed_message) -> asio::awaitable<std::tuple<error_code, std::size_t>> { co_return co_await async_write(stream, typed_message, asio::as_tuple); }, message); ec.failed()) // { // error handling } else { //success handling } } 坚持住 但是,请注意,您不需要对变体响应对象如此笨拙。您可以使用 BuffersGenerator 键入擦除响应。支持所有 message<> 实例的实现称为 http::message_generator。例如: #include <boost/asio.hpp> #include <boost/asio/experimental/channel.hpp> #include <boost/beast.hpp> namespace asio = boost::asio; namespace http = boost::beast::http; using http_response_t = std::optional<http::message_generator>; using channel_t = asio::experimental::channel<void(boost::system::error_code, http_response_t)>; template <typename stream_t> asio::awaitable<void> response_worker(channel_t& channel, stream_t& stream) { using boost::beast::error_code; while (true) { if (auto [ec, response] = co_await channel.async_receive(asio::as_tuple); ec == asio::error::eof) { co_return channel.close(); } else if (response.has_value()) { if (auto [ec, transferred] = co_await boost::beast::async_write(stream, std::move(*response), asio::as_tuple); ec.failed()) // { // error handling } else { // success handling } } } } int main() { asio::io_context io_context; asio::ip::tcp::socket socket(io_context); // TODO connect channel_t channel(io_context); co_spawn(io_context, response_worker(channel, socket), asio::detached); io_context.run(); }

回答 1 投票 0

在 C/C++ 中静态链接 OpenMP 库

我有一个简单的 C++ 程序,什么也不做: int main() { 返回 0; } 我正在尝试使用以下命令完全静态地构建该程序: g++ -o c c.cc -静态 一切正常...

回答 1 投票 0

在 Macos 上使用 g++ 和 clang 找不到 iostream

我正在尝试从源代码编译StegHide,但收到一条错误消息,说找不到iostream。 我编写了以下程序并使用 -std 设置为我的系统的所有标准进行编译...

回答 1 投票 0

有没有办法让 Clang 输出 LLVM IR 以及可执行文件?

我知道您可以使用 -emit-llvm 选项来生成 clang 输出 LLVM IR,但这使其成为唯一的输出。 我想知道是否有一些编译器选项的组合可以使 clang

回答 2 投票 0

是编译bug吗?在 constexpr 函数中访问 union 的非活动成员会导致编译时评估出现编译错误

当我使用 constexpr 函数时,我遇到了以下问题。 我知道访问联合体的非活动成员是未定义的行为。但这一规则有一个例外。 根据C+...

回答 1 投票 0

是编译bug吗?在 constepr 函数中访问 union 的非活动成员会导致编译时评估出现编译错误

当我使用 constexpr 函数时,我遇到了以下问题。 我知道访问联合体的非活动成员是未定义的行为。但这一规则有一个例外。 根据 C++23

回答 1 投票 0

AppleClang 15:“std::atomic<float>”中没有名为“fetch_add”的成员

我有一个 C++20 程序,可以在 Ubuntu 20 中使用 GCC 10 或在 Visual Studio 2019 中成功构建。现在我需要为 macOS 13.7.2 x64 编译它(目前可在 GitHub 托管的 runn 上使用)。 ..

回答 1 投票 0

LLVM 如何区分 clang 和 clang++ 命令?

我正在探索 LLVM/Clang 源代码,并有兴趣了解 LLVM 如何区分 clang 和 clang++ 命令,因为知道 clang++ 通常被认为是 clang 的别名。哪个...

回答 1 投票 0

Rextester语言编译C++问题

我一直在使用 rextester 来处理各种语言,并且它的工作效率非常高。它只是给 1 种语言造成问题,即 C++ (clang) 参数如下:- 语言Cho...

回答 2 投票 0

使用 clang 将 std lib 作为模块导入

我正在尝试 clang 中的模块,并且希望将标准库作为模块而不是作为包含包含在内。 目前我这样做 #包括 #包括 看来

回答 4 投票 0

未知类型名称'__time64_t'

尝试用 gcc 编译我的项目是成功的。当尝试使用任何基于 clang 的编译器执行此操作时,会发生以下错误: [构建] /usr/bin/clang++ -I/mnt/40ab93ed-5db8-4e22-a055-9775c3e5b937/ISC-

回答 1 投票 0

std::vector:为什么没有发生 out_of_range 错误?

Mac M1。 铿锵++——版本 Apple clang 版本 16.0.0 (clang-1600.0.26.4) 目标:arm64-apple-darwin24.0.0 线程模型:posix 我的代码: #包括 #包括 int main()...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.