草庐IT

c++ - Visual C++ 2008 和 g++ 的区别

我正在学习C++,当我测试MicrosoftVisualC++2008Express和EclipseGanymede时,g++编译器默认,我注意到VC++中的相同代码会出现一些错误,而在g++中可以正常编译,没有错误或警告并正常执行,但我想知道VC++语法和g++语法有什么区别?谢谢! 最佳答案 无法发表评论,因为我是新手(声望还不到50),但这是另一个处理类似主题的StackOverflow问题:CompilingdifferencesinVisualC++and*nixenvironments

c++ - gcc/g++ 可以在忽略我的寄存器时告诉我吗?

用gcc/g++编译C/C++代码时,如果忽略了我的寄存器,能告诉我吗?例如,在这段代码中intmain(){registerintj;intk;for(k=0;kj将用作寄存器,但在此代码中intmain(){registerintj;intk;for(k=0;kj将是一个普通变量。它能告诉我我使用寄存器的变量是否真的存储在CPU寄存器中吗? 最佳答案 您完全可以假设GCC会忽略register关键字,除了-O0。但是,它不应该以任何方式产生影响,如果您深入了解,您应该已经在阅读汇编代码了。这是关于此主题的信息线程:http://

c++ - g++中的模板函数匹配

我遇到了一个奇怪的问题,我想知道为什么g++4.1.2会这样。精简到最基本的:#includetemplateinlinevoidf(Tx){std::coutf(2)调用失败,因为编译器无法匹配模板函数f。我可以让它与::f(2)一起工作,但我想知道为什么这是必要的,因为它是完全明确的,并且就我(公认的过时的)匹配知识而言规则是,这应该有效。 最佳答案 编译器从当前范围开始检查候选范围的所有范围。它在直接范围内找到一个名为f的函数,并在那里停止搜索。您的模板版本永远不会作为候选版本进行检查。参见NamespacesandtheIn

C++ 程序,用 g++ 编译

我很清楚在linux环境下用g++编译C++程序。但是,可能是我遗漏了什么,我得到了这种奇怪的输出/行为。我在test.cpp中有源文件。为了编译这个,我做了(1)g++-ctest.cppg++-otesttest.o./test一切正常。但是当我在同一阶段进行编译和链接时,就像这样(2)g++test.cpp-otest./test=>Worksfine(3)g++-ctest.cpp-otest=>Doesn'twork在我的最后一个案例中,生成了测试但不再可执行;但在我看来它应该可以正常工作。那么,出了什么问题或者我需要更改一些设置/配置??我正在使用g++4.3.3谢谢。

c++ - g++ 编译器为表达式提供 << 类型错误,但在 Visual Studio 中有效

好的,我认为这可能只是一个版本问题,但我是新手。我有一个主文件,它使用我覆盖的BigInt的运算符我实现的类:BigInta=3;cout在VisualStudio中,编译器可以很好地理解所有内容,并且运行良好。但是转移到Ubuntu14.04,make使用我的Makefile(它使用简单的g++命令)给了我无数类型的错误,这些错误是由第三行(以及任何其他使用带表达式的cout的行)引起的。如果我删除第三行,它编译得很好。第一个错误是:main.cpp:23:8:error:nomatchfor'operator}'and'BigInt')cout这很令人困惑,因为我的运算符函数采用引

c++ - 为什么 g++ 仍然需要 -latomic

在C++标准2014年11月工作草案的29.5原子类型中,它指出:Thereisagenericclasstemplateatomic.ThetypeofthetemplateargumentTshallbetriviallycopyable(3.9).[Note:Typeargumentsthatarenotalsostaticallyinitializablemaybedifficulttouse.—endnote]所以-据我所知-这个:#includestructMessage{unsignedlonginta;unsignedlongintb;};std::atomicshar

c++ - g++-7.0/访问硬件中 constexpr 函数的不同行为

我使用以下代码访问某些MCU寄存器。#includestructMCU{structTimer{volatileuint8_tr1;templatestructAddress;};};templatestructMCU::Timer::Address{staticconstexpruint8_tvalue=0x25;};templateconstexprComponent*getBaseAddr(){returnreinterpret_cast(Component::templateAddress::value);}structTest{staticvoidfoo(){p->r1=42

c++ - GNU/G++ 4.9(2.95.3 之前的版本)的 C++11 中的 string_char_traits<char>

我有一些遗留的C++代码(用于使用GNUg++2.95.3进行编译)具有以下声明std::basic_string,malloc_alloc>x;头文件是#include现在,我正在迁移到GUg++4.9,但出现此错误:1.std/bastring.h未找到2.当我改变#include作为#include,我收到以下错误:error:'string_char_traits'wasnotdeclaredinthisscopestd::basic_string,malloc_alloc>x;error:templateargument2isinvalidstd::basic_string,

一文搞懂路由器2.4G和5G的区别,以及双频合一模式

大家好,我是IT售前工程师Bernie.本文我们一起探讨下无线网连接中2.4G和5G的区别,欢迎阅读。我们知道,无线路由器是平时生活和工作中最常见不过的一个无线设备,通过它我们的手机、笔记本、智能电视、摄像头等,都可以接入互联网。其实WiFi在1998年就开始使用了,当时仅仅是在欧美地区小范围使用,我们国家在2008年开始普及WiFi。到目前为止,按照WiFi的频率分为2.4Ghz和5GHz两种。其中,2.4GHz这个频段是最早应用的,也是使用最多的。802.11协议是IEEE802标准委员会制定的无线局域网标准。它定义了物理层和数据链路层的信号传输服务和协议簇。在单通道模式下,2.4G的接入

c++ - 支持 g++ 中的类型属性

我们什么时候可以期待对standardtypeproperties的支持在g++中?libstdc++提供对大多数类型属性的支持,其中一些需要来自specialGNUextensions的支持.但是,完全支持会很好,我想知道那会是什么时候。我尝试查询libstdc++邮件列表,但遗憾的是没有收到任何回复。如果您想知道哪些类型属性缺乏支持,这里有一些:Missingis_trivially_copyable,is_assignable,is_copy_assignable,is_move_assignable,is_trivially_constructible,is_trivially