首页
学习
活动
专区
工具
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中,标准允许使用花括号{}对数组或者结构体元素进行统一列表初始值设定。

8810

【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

7010
  • 【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

    41700

    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++ 吗?

    52220

    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中,标准允许使用花括号{}对数组或者结构体元素进行统一列表初始值设定。

    9110

    【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调用了多层,就很难确定一个变量类型,让代码可读性变得很差!让代码维护变得更加困难!所以使用中要谨慎使用!!!

    9810

    哪个版本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.8K20

    【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我们可以获取类型并使用这个类型

    20710

    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...之前,你必须使用尖括号()来指定需要实例化类模板类型参数.

    82920

    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中孕育出一种新语言。...::map m{ {"apple", "苹果"}, {"banana","香蕉"} }; // 使用迭代器遍历容器,...在C++中对于空类编译器会生成一些默认成员函数,如果在类中显式定义了,编译器将不会重新生成默认版本 有时候这样规则可能被忘记,最常见是声明了带参数构造函数,必要时则需要定义不带参数版本以实例化无参对象...,在C++98中,是该函数设置成private,并且不给定义,这样只要其他人想要调用就会报错 在C++11中更简单,只需在该函数声明加上=delete即可,该语法指示编译器不生成对应函数默认版本,称=

    72360

    【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中,标准允许使用花括号{}对数组或者结构体元素进行统一列表初始值设定。...左值是一个表示数据表达式(如变量名解引用指针),我们可以获取它地址+可以对它赋 值,左值可以出现赋值符号左边,右值不能出现在赋值符号左边。

    5910

    列表初始化:轻量级对象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版本,因此可以直接使用{}进行初始化。

    19710

    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::list > mylist; // emplace_back支持可变参数,拿到构建pair对象参数后自己去创建对象

    9810

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

    如何使用std::unique_ptr实现pimpl?为什么你在使用lambda表达式时应该避免默认变量捕捉形式?或者是std::atomic和volatile区别和如何正确使用它们?...术语和约定 为了确保我们互相了解,我们需要在一些术语上达成一致,C++有4个标准,每一个以被ISO标准采用年份命名,C++98,C++03,C++11和C++14,C++98C++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.

    5210

    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中,标准允许使用花括号{}对数组或者结构体元素进行统一列表初始值设定。...: 如果你使用函数是调用其他函数来实现,那么你调用函数也要进行完美转发修饰: 例如: 下面代码中头插pushfront和pushback是调用insert,那么insert中右值引用版本插入值语句也要用完美转发

    11710

    C++03标准

    C++03是指C++语言第三个标准,也称为ISO/IEC 14882:2003。它于2003年发布,并取代了之前C++98标准。...在C++03中,添加了一些新特性和修复了一些错误,以提供更好编程体验和更高代码可移植性。 ①标准库增强: 引入了 标准头文件,用于输入输出操作。...在 头文件中增加了 std::string 类型,提供了更方便字符串操作。 添加了 头文件,用于流式字符串处理。...②类型和表达式: 引入了布尔类型 bool,表示真假。 提供了 long long 整型,用于表示更大范围整数。 支持数字字面值之间下划线分隔,例如:1'000'000。...弃用了异常规范动态类型系统(Dynamic Exception Specification)。 允许使用 catch (...) 来捕获所有类型异常。

    30220

    【C++】C++11中常见语法(上)

    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++11来源:1998年是 C++ 标准委员会成立第一年,本来计划以后每 5 年视实际需要更新一次标准,C++ 国际标准委员会在研究 C++03 下一个版本时候,一开始计划是 2007 年发布...::initializer_list std::initializer_list 介绍文档:std::initializer_list 我们先来看看 std::initializer_list 是什么类型

    18110

    【C++】如何巧妙运用C++命名空间:初学者必备指南

    C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美 国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)C++03 C++标准第二个版本,...但是:现在公司主流使用还是C++98和C++11,所有大家不用追求最新,重点将C++98和C++11掌握好。等工作后,随着对C++理解不断加深,有时间可以去琢磨下更新特性。...int main(){ printf("%d\n", N::a); printf("%d\n", b); Add(10, 20); return 0;}关于上面三种方式,在日常练习竞赛中更加推荐使用第三种更为简便方式...>+std方式六、std命名空间使用惯例std是C+标准库命名空间,如何展开std使用更加合理呢?...所以建议在项目开发中使用,向std::cout这样使用时指定命名空间和using std::cout展开常用库对象/类型等方式。

    18110
    领券