首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用-std=c++98或-std=c++03构建的谷歌protobuf版本是什么?

使用 -std=c++98-std=c++03 构建的 Google Protocol Buffers(protobuf)版本是 protobuf 2.x 系列。这是因为 protobuf 2.x 是最后一个支持 C++98 和 C++03 标准的版本。

从 protobuf 3.0 开始,库已经不再支持 C++98 和 C++03 标准,转而全面支持更新的 C++11 及以上标准。因此,如果你需要使用 protobuf 并且编译环境只支持 C++98 或 C++03,你应该使用 protobuf 2.x 版本。

你可以通过以下命令安装 protobuf 2.x 版本(以 Ubuntu 为例):

代码语言:javascript
复制
sudo apt-get install libprotobuf-dev protobuf-compiler

或者从源码编译 protobuf 2.x 版本:

代码语言:javascript
复制
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout v2.x.x  # 替换为你需要的具体版本号
./autogen.sh
./configure --with-protoc=protoc CXXFLAGS="-std=c++98"  # 或者使用 "-std=c++03"
make
sudo make install

请注意,随着时间的推移,protobuf 2.x 系列可能不再接收安全更新或修复,因此如果可能的话,建议升级到支持 C++11 或更高标准的 protobuf 3.x 版本,并在相应的编译环境中使用 -std=c++11 或更高版本的编译选项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++奇迹之旅:列表初始化和std::initializer_list(C++11第一篇)

C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...C++ 03的下一个版本的时候,一开始计划是2007年发布,所以最初这个标准叫C++ 07。...统一的列表初始化 {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。

10410
  • 【C++航海王:追寻罗杰的编程之路】C++11(一)

    1 -> C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了 C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞 进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...2 -> 统一的列表初始化 2.1 -> {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。...std::initializer_list的介绍文档 std::initializer_list是什么类型: #define _CRT_SECURE_NO_WARNINGS 1 #include

    7510

    【C++修炼之路】26.C++11(语法糖)

    不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...+ 03的下一个版本的时候,一开始计划是2007年发布,所以最初这个标准叫C++ 07。...二.统一的列表初始化 2.1 {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。...---- std::initializer_list的使用场景: std::initializer_list一般是作为构造函数的参数,C++11对STL中的不少容器就增加std::initializer_list

    44000

    《C++11》各种初始化方式的详细列举与对比

    C++98/C++03 的初始化方式在 C++98 和 C++03 中,主要有以下几种初始化方式:1.1 直接初始化(Direct Initialization)使用构造函数直接初始化对象。...容器1.4 列表初始化(List Initialization)在 C++98/C++03 中并不支持列表初始化,但可以使用初始化列表来初始化数组。...int a = {5}; // 列表初始化整数std::vector v = {1, 2, 3}; // 列表初始化 STL 容器2.1.1 命名列表初始化可以为元组或结构体的成员命名...深入理解 C++11 及以后的新特性在 C++ 中,特别是 C++11 及以后的版本中,以下几个概念是非常重要的,它们帮助开发者编写更安全和更易于维护的代码。...灵活性:可以在初始化时只指定部分成员,未指定的成员会使用默认值。注意在 C++11 中,虽然没有直接的命名初始化语法,但可以通过构造函数或其他方式实现类似的效果。5.

    5700

    C++ 实用指南

    年 11 月 C++17-1586,草案,N4606 C++20-1834,草案,N4861 看起来 C++17 几乎比 C++98/03“大”了 80%,而 C++ 的最新草案比 C++03 多了将近...我们已经看到很多关于 C++11 之前的旧版 C++ 的抱怨。人们花了将近 13 年的时间(从主要的 C++98 算起,不包括次要的 C++03)才提出新的主要版本:C++11。...如果你不想涉及低级别和容易出错的联合类型,你应该意识到std::variant是一个安全的选项。 使用你需要的东西 C++ 是一种多范式语言;你可以以多种不同的方式使用它。...例如,即使像谷歌这样的公司也限制了 C++ 的特性,比如说他们不使用异常。 如果你不是库开发人员,你可能不会遇到自定义移动运算符或移动构造器的麻烦。...在采用 C++11/14/17/20 的新特性时,你的方法是什么? 你使用 C++ 的主要问题是什么? 你在工作中使用现代 C++ 吗?

    52820

    C++11第一弹:简介 | 统一的列表初始化 | 声明

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...1998年是C++标准委员会成立的第一年,本来计划以后每5年视实际需要更新一次标准,C++国际标准委员会在研究C++03的下一个版本的时候,一开始计划是2007年发布,所以最初这个标准叫C++ 07。...在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。

    10210

    【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字

    1 C++ 11介绍 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...在遇到比较复杂的类型时,可以使用auto进行快速推断,方便我们的书写。...如果auto调用了多层,就很难确定一个变量的类型,让代码的可读性变得很差!让代码的维护变得更加困难!所以使用中要谨慎使用!!!

    10910

    哪个版本的gcc才支持c11

    它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。新的标准包含核心语言的新机能,而且扩展C++标准程序库。...关于C++11的新特性和一些版本变更请看:C++11-维基百科     目前最新版本的GCC/G++是4.8,新版本的GCC支持最新的C++11标准,十分值得去使用&学习。...此时使用gcc -v查看默认版本,为4.6版本: ?...既然GCC-4.8使用了最新的C++11标准,但是我们为什么还是提示错误呢?解决方法如下: 在编译的时候添加-std=c++11选项即可正常编译C++11标准的代码!...提示错误:‘c’变量没有类型,范围for循环不允许在C++98标准中使用 这是因为GCC/G++默认的-std(即C++语言标准)不是C++11,在这里默认的是C++98,所以需要显式地开启,即添加-

    7.9K20

    【C++11】{}初始化、std::initializer_list、decltype、STL新增容器

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正...initializer_list是C++11引入的一种特殊类型,用于简化初始化列表的使用。它可以在构造函数或函数参数中以列表的形式传递一组值。...decltype是可以获取表达式或变量类型的关键字 我们之前用过typeid(变量/表达式).name()可以获取变量或表达式的类型,然后我们可以打印出来查看,而使用decltype我们可以获取类型并使用这个类型

    22810

    C++17, 语言核心层有哪些新的变化?

    The big picture 从 C++98 到 C++14,图中只列出了较大的特性要点.图中也缺少了关于 C++03 的特性描述, 因为C++03标准非常小,内容上更多是为了修复 C++98 的一些缺陷....如果你熟悉C++,那么你一定知道 C++98(第一个C++标准) 和 C++11 是两个非常大的C++标准, 但C++14,特别是C++03则是两个小标准....cout std::endl; return 0; } 上述代码中(第6行)使用的二元运算符是逻辑与(&&).程序的输出如下: 对于折叠表达式我想说的就是这些,如果你想了解更多的细节,可以看看我之前的一篇关于折叠表达式的文章...::cout std::endl; return 0; } 22行和23行代码从C++第一个标准开始(C++98)便是合法的,但是25行及26行代码则只能在C++17中编译通过,因为在C++17...之前,你必须使用尖括号()来指定需要实例化的类模板的类型参数.

    86020

    C++11-列表初始化变量类型推导范围forfinal&override默认成员函数控制

    ,主要是一些比较常用的语法 一、C++11简介 发展历程: 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...::mapstd::string, std::string> m{ {"apple", "苹果"}, {"banana","香蕉"} }; // 使用迭代器遍历容器,...在C++中对于空类编译器会生成一些默认的成员函数,如果在类中显式定义了,编译器将不会重新生成默认版本 有时候这样的规则可能被忘记,最常见的是声明了带参数的构造函数,必要时则需要定义不带参数的版本以实例化无参的对象...,在C++98中,是该函数设置成private,并且不给定义,这样只要其他人想要调用就会报错 在C++11中更简单,只需在该函数声明加上=delete即可,该语法指示编译器不生成对应函数的默认版本,称=

    73860

    列表初始化:轻量级对象initializer_list

    C++发展历史 C++11是C++语言的第二个主要版本,也是自C++98以来最重要的一次更新。它引入了大量的新特性,标准化了已有的实践,并极大地改进了C++程序员可用的抽象能力。...C++03与C++11之间间隔了8年,这是C++版本发布史上最长的一次。从那时起,C++社区每三年发布一次新标准,保持了更加稳定的更新节奏。...C++98中的初始化方式 在C++98中,数组和聚合类型(如结构体)可以使用大括号{}进行初始化,但基本类型和自定义类对象通常不能直接使用{}初始化,需要使用构造函数或赋值操作。...基本类型和自定义类的初始化 在C++98中,基本类型的初始化不能使用{},需要使用赋值或构造函数。...容器类(如vector)的构造函数和赋值运算符都增加了接受std::initializer_list的版本,因此可以直接使用{}进行初始化。

    28310

    【C++课程学习】:C++11(C++发展,列表初始化,声明auto,typeid,decltype)

    C++学习笔记: https://blog.csdn.net/djdjiejsn/category_12682189.html 前言: C++11相对于C++98和C++03而言增加了大约140个新特性...1997年11月14日,联合标准化委员会通过了C++标准的最终草案。 1998年,C++的ANSI/ISO标准被投入使用,这通常被认为是标准C++。...以下是一些主要的变化: ●C++98:C++语言的第一个正式标准版本,包含了许多重要的特性,如类和对象、继承、虚函数和多态、封装、抽象类、模板、异常处理、标准模板库(STL)、命名空间等。...●C++03:对C++98版本的漏洞做了部分修改。...1.2C++11: C++98是C++第一版的标准,C++03是对C++98中漏洞进行修复,C++11增加很多的新特性,和C++98/03有很大的区别了。

    8800

    【C++的创新性】C++11语法颠覆你的认知了吗?

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了 C++98称为C++11之前的最新C++标准名称。...不过由于C++03主要对C++98标准中的漏洞 进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...列表初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。...左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋 值,左值可以出现赋值符号的左边,右值不能出现在赋值符号左边。

    6110

    【c++修炼之路】从零到英雄:c++的传奇进化史

    C++的发展就像是练功打怪升级一样,也是逐步递进,由浅入深的过程。我们先来看下C++的历史版本。 C++98:这是第一个 ANSI/ISO 标准化的 C++ 版本,发布于 1998 年。...C++03:这个版本主要是对 C++98 的一些修正和改进,发布于 2003 年,并未引入新的语言特性,所以一般不把它当做重要版本,存在感也不强。...C++17:这个版本进一步提升了 C++ 的功能和易用性,新功能不是很多,引入了结构化绑定、if constexpr、std::optional、std::variant、std::string_view...网络通信:C++提供了强大的网络编程库,适合构建各种网络应用和协议,如Web服务器Nginx、Apache HTTP Server,以及网络协议实现如TCP/IP协议栈、HTTP、FTP等。...五、图形和图像处理 C++在图形和图像处理领域也有广泛的应用,如使用OpenGL、DirectX等图形API进行图形编程,以及使用图像处理库如OpenCV进行图像处理。

    4100

    C++11新特性 右值引用与新的类功能

    C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...统一的列表初始化 2.1 {}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。...int main() { std::liststd::pair > mylist; // emplace_back支持可变参数,拿到构建pair对象的参数后自己去创建对象

    10210

    C++11:新特性&右值引用&移动语义

    一、C++11简介 在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。...不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。...相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...二、统一的列表初始化 1、{}初始化 在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。..._y << endl; } 总的来说就是emplace_back和push_back 在处理已经构建好的对象时,是没有差异的,因为无论是左值还是右值,push_back都有对应的版本。

    10610

    Effective Modern C++翻译(1):序言

    如何使用std::unique_ptr实现pimpl?为什么你在使用lambda表达式时应该避免默认的变量捕捉形式?或者是std::atomic和volatile的区别和如何正确的使用它们?...术语和约定 为了确保我们互相了解,我们需要在一些术语上达成一致,C++有4个标准,每一个以被ISO标准采用的年份命名,C++98,C++03,C++11和C++14,C++98和C++03只是存在一些微妙的技术细节上的差别...当我提到C++98的时候,我指的只是C++语言的这个版本,当我提到C++11的时候,我指的是C++11和C++14,因为C++14是C++11的一个有效的超集,当我写C++14的时候,我明确的指的是C+...+14,如果我只是简单的提到C++,那么它是属于所有语言版本的,因此,我可能会说C++是十分重视效率的(这里指的是所有的C++版本),C++98缺少对并发性的支持(指的仅仅是C++98),C++11支持了...C++11最流行的特性很可能是移动语义,移动语义的基础是从表达式中判断是左值或右值,这是因为右值暗示了对象有资格使用移动运算,而左值通常不能。

    1.2K90

    【C++11】入门基础

    C++11简介 C++11是C++编程语言的一个重要版本,它于2011年发布。...相比于C++98/03,C++11给C++带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...统一的列表初始化 2.1{}初始化   在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。...初始化列表是一种在对象创建过程中用于初始化成员变量或数组的语法。它使用花括号{}将初始值列表放在对象的构造函数或初始化器中。...std::initializer_list是一个标准库类型,在C++11中引入。它是一个模板类,用于在不使用显式构造函数的情况下,以统一的方式初始化容器或其他对象。 3.

    6310
    领券