error: ‘for’ loop initial declarations are only allowed in C99 mode (改Makefile)

2023-11-20

c – 强制C99在CMake(使用’for’循环初始声明)

 2019-04-25 C&C++ 编程之家 https://www.jb51.cc

编程之家收集整理的这篇文章主要介绍了c – 强制C99在CMake(使用’for’循环初始声明)编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直在寻找便携式方式来强制CMake启用编译器的C99功能,以避免以下 gcc错误

 
  1. error: ‘for’ loop initial declarations are only allowed in C99 mode
  2. for (int s = 1; s <= in_para->StepNumber; s++){
  3. ^

我也不想检查哪个编译器并附加如下:

 
  1. set(CMAKE_C_FLAGS "-std=c99") # that would be bad

所以我发现这个帖子:Enabling C99 in CMake和相关的功能要求:0012300: CMake has no cross-platform way to ask for C99.在这个螳螂错误中,我了解了target_compiler_features,之后我发现了这些SOF答案:How to activate C++11 in CMake?和How to detect C++11 support of a compiler with CMake.

所以我的问题是:这个target_compiler_features将提供一种要求C功能和C功能方法?现在最流行的方式是什么 – 我正在使用CMake 2.8.12.2. target_compiler_features不在CMake的最新版本(3.0.0)中.你知道什么时候被释放吗?

解决方法

创建目标(如库或可执行文件)后,将这样的行放在您的CMakeLists.txt文件中:

 
  1. set_property(TARGET tgt PROPERTY C_STANDARD 99)

其中tgt是您的目标的名称.

我认为这是添加在CMake 3.1中,文档在这里:

http://www.cmake.org/cmake/help/v3.1/prop_tgt/C_STANDARD.html

如果您需要支持早于3.1的CMake版本,则可以使用此宏:

 
  1. macro(use_c99)
  2. if (CMAKE_VERSION VERSION_LESS "3.1")
  3. if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
  4. set (CMAKE_C_FLAGS "--std=gnu99 ${CMAKE_C_FLAGS}")
  5. endif ()
  6. else ()
  7. set (CMAKE_C_STANDARD 99)
  8. endif ()
  9. endmacro(use_c99)

将该宏放置在顶级文件中,以便随处可见,您可以在任何使用C99代码定义目标的CMakeLists文件的顶部写入use_c99().

总结

以上是编程之家为你收集整理的c – 强制C99在CMake(使用’for’循环初始声明)全部内容,希望文章能够帮你解决c – 强制C99在CMake(使用’for’循环初始声明)所遇到的程序开发问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

error: ‘for’ loop initial declarations are only allowed in C99 mode (改Makefile) 的相关文章

随机推荐

  • Docker 容器迁移

    1 把容器打包成镜像 docker commit m 描述 a 作者 CONTAINER ID 新的镜像名 docker commit m my rabbitmq a eric a922049125c4 rabbitmq my 1 0 2
  • QT 改编官方example QQuickView实现QQuickWidgt示波器

    先找到官方实例 将官方实例的QML文件全部搞到自己的资源中 pro中加入这个 DISTFILES 刚刚的QML文件路径 qml 还有这个 QT core gui quickwidgets QT qml 将官方的datasource cpp
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p
  • centos7没有ens33网卡的解决方案

    1 首先设置在系统启动时激活网卡 vim etc sysconfig network scripts ifcfg ens33 将ONBOOT no改为ONBOOT yes 2 执行下面的命令 此时ifconfig 显示有了ens33网卡 但
  • 【Linux】Libevent库

    Libevent 高性能I O框架库 底层封装了select poll epoll 便于使用 I O框架库以库函数的形式 封装了较为底层的系统调用 给应用程序提供了一组更便于使用的接口 特点 1 跨平台 2 统一事件源 I O事件 信号 定
  • Jeesite框架实用 前端页面展示表如何插入其他表数据

    目录 前言 问题 解决方法 第一步 第二步 第三步 前言 最近做类似于OA产品时选用了Jeesite框架 也学习有一段时间 这个框架的初级操作嘛就是 设计好表然后用代码生成器生成 一张表生成一个前端页面显示 问题 代码生成器根据一张数据库表
  • Huggingface训练Transformer

    在之前的博客中 我采用SFT 监督优化训练 的方法训练一个GPT2的模型 使得这个模型可以根据提示语进行回答 具体可见博客召唤神龙打造自己的ChatGPT gzroy的博客 CSDN博客 Huggingface提供了一个TRL的扩展库 可以
  • Linux基础命令1(农夫笔记-自用)

    1 创建和查看隐藏文件 以 开头的文件或文档 攻击者可能要去传一个木马或者后门 或者自己要去做这些事情的时候需要用到 2 cd 等于cd 一样的作用 可以回到家目录 3 ll是ls l的别名 也具有同样的效果 就是使用较长格式列出信息 4
  • MATLAB中如何输入特殊符号

    alpha beta gamma theta Theta Gamma delta Delta xi Xi elta epsilong zeta miu nu tau lamda Lamda pi Pi sigma Sigma phi Phi
  • 初识express/路由/中间件

    路由的概念 模块化路由 中间件 要有输入输出 简化版本 全局生效中间件 局部生效中间件 注意事项 中间件分类 内置中间件 解析请求体 url encoded 自定义中间件 使用querystring模块解析请求体数据 编写接口
  • Linux笔记

    文章目录 一 初识Linux 1 操作系统概述 1 1 计算机由哪两个主要部分组成 1 2 操作系统是什么 有什么作用 1 3 常见的操作系统有哪些 2 Linux初识 3 虚拟机介绍 3 1 什么是虚拟机 3 2 为什么要使用虚拟机 4
  • 小程序扫码只允许扫码运单条形码

    wx scanCode success res gt console log res let result res result 只允许 字母 数字 字母 数字 if result 0 9a zA Z g test result wx sh
  • [网络安全自学篇] 二十七.Sqlmap基础知识、CTF实战及请求参数设置(一)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Shodan搜索引擎的基本用法及Python命令行 本篇文章详细讲解了Sqlmap的基本用法 CTF实战 并且分
  • 由浅及深PCB布线设计

    第一部分 在当今激烈竞争的电池供电市场中 由于成本指标限制 设计人员常常使用双面板 尽管多层板 4层 6层及8层 方案在尺寸 噪声和性能方面具有明显优势 成本压力却促使工程师们重新考虑其布线策略 采用双面板 在本文中 我们将讨论自动布线功能
  • 动态规划——数字三角形C语言

    一 分析 先说一下相关动态规划的一些概念 参考下方博文 原文链接 https blog csdn net every day article details 88174082 一个模型三个特征 理论的讲解 动态规划作为一个非常成熟的算法思想
  • Sentence-BERT论文阅读笔记

    目录 1 第一篇论文 Sentence BERT Sentence Embeddings using Siamese BERT Networks 1 1 论文基本信息 1 2 动机 1 3 模型 1 4 实验 1 4 1 训练所用的数据集
  • css如何实现三角形的方法

    在开发页面的时候 遇到很多的列表都需要用到箭头 可以直接用图片作背景铺垫 纯CSS也能实现 并且没有兼容性顾虑 不用CSS3 相比而言 比图片更好用 原理 一个高宽相等的正方形 选取你所需要的某一边 截取之 就是一个梯形 当高宽都为0 且其
  • springboot日志操作

    springboot日志 日志介绍 1 日志的输出等级 2 运用lombok快速添加日志对象log 3 日志输出格式控制 4 日志文件 4 1 直接指定文件名 4 2 指定最大空间和格式 日志介绍 日志就是记录程序日常运行的信息 sprin
  • Android中图片的裁剪与压缩

    文章目录 一 图片的剪裁 1 属性介绍 二 图片压缩 1 图片质量分类 2 图片默认质量 3 占用内存 4 图片的尺寸压缩或者拉伸 三 Bitmap压缩 1 质量压缩 2 采样率压缩 3 缩放法压缩 一 图片的剪裁 ImageView默认的
  • error: ‘for’ loop initial declarations are only allowed in C99 mode (改Makefile)

    c 强制C99在CMake 使用 for 循环初始声明 2019 04 25 C C 编程之家 https www jb51 cc 编程之家收集整理的这篇文章主要介绍了c 强制C99在CMake 使用 for 循环初始声明 编程之家小编觉得