call to non-‘constexpr‘ function

这篇具有很好参考价值的文章主要介绍了call to non-‘constexpr‘ function。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

call to non-‘constexpr’ function

概述

在尝试迁移 openpnp - Smoothieware project 从gcc命令行 + MRI调试方式 到NXP MCUXpresso工程.
在加了头文件路径后, 还有一些语法错误. 这和编译器语法有关系.
在运行BuildShell.cmd后, 查看gcc版本如下.

D:\3rd_prj\Smoothieware_best-for-pnp>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgversion='MinGW.org GCC Build-2'
Thread model: win32
gcc version 9.2.0 (MinGW.org GCC Build-2)

Smoothieware使用c++写的.
其中一条错误如下:

描述	资源	路径	位置	类型
call to non-'constexpr' function 'uint16_t get_checksum(const char*)'	checksumm.h	/my_Smoothieware_best-for-pnp/src/libs	第 162 行	C/C++ Problem

call to non-‘constexpr‘ function

查了一下这条错误的原因, 就是语法错误.
在switch的case处, 用了常量表达式函数(一个函数来代替常量, 这个函数在编译期就能确定值), 那么这个常量表达式就必须标记为constexpr
使用constexpr比宏更好, 更明确.
做了一个实验, 可以正常使用constexpr了.

// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

// constexpr 是c++11的语法, vs2022默认的最低编译器是c++14, 符合要求.
// constexpr好处是不用再写宏. 而是由编译器在编译时, 就能确定一个常量表达式的值. 这个常量表达式是有值类型的, 比宏好.

// 如果函数需要作为常量表达式, 必须标记为 constexpr
constexpr int test(int x, int y)
{
    return (x + y);
}

int inum_ary[test(1,2)];

class cls_adc {
public:
    cls_adc()
    {

    }

    virtual ~cls_adc()
    {

    }

    int get_x()
    {
        return inum_ary[2];
    }

    static const int i_ary_cnt = test(1, 2); // 如果constexpr函数的值要间接作为一个常量用, 这个常量必须为 static const type
    int inum_ary[i_ary_cnt];
};

int main()
{
    std::cout << "Hello World!\n";
    int i = 0;

    cls_adc case1;
    printf("get_x() = %d\n", case1.get_x());

    for (i = 0; i < case1.get_x(); i++)
    {
        switch (i)
        {
            // 作为case使用时的常量表达式函数, 必须标记为 constexpr
        case test(0, 1):
            printf("bp1\n");
            break;

        default:
            break;
        }
    }

    system("pause");
}

备注

在具体工程中的错误, 在具体去改.
不清楚为啥同样的代码, 在gcc命令行 + makefile下就能编译过. 也许是编译器命令行不同. 以后有兴趣再查.
现在先尝试将代码中的语法限定先改了, 能在MCUXpresso工程中编译过再说.文章来源地址https://www.toymoban.com/news/detail-444191.html

END

到了这里,关于call to non-‘constexpr‘ function的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenAI】ChatGPT函数调用(Function Calling)实践

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(49)
  • 重构内置类Function原型上的call方法

    代码优化: 希望给你们带来帮助,有更好的方法也希望发出来呦,期待你们的指点

    2024年02月13日
    浏览(48)
  • 【Azure OpenAI】OpenAI Function Calling 101

    本文是结合 github:OpenAI Function Calling 101在 Azure OpenAI 上的实现: Github Function Calling 101 如何将函数调用与 Azure OpenAI 服务配合使用 - Azure OpenAI Service 使用像ChatGPT这样的llm的困难之一是它们不产生结构化的数据输出。这对于在很大程度上依赖结构化数据进行系统交互的程序化系

    2024年02月10日
    浏览(39)
  • 【JavaScript】Function的祖传方法call与apply

    看了本文您能了解到的知识! 在本篇文章中,将带你了解 什么是call和apply , call和apply的用途 、如何手写 call 和 apply 以及 call 和 apply 的使用场景。 call() 和 apply() 是 JavaScript 中的两个内置方法,用于调用函数并指定函数中的 this 值。 两者的区别是: call() 方法的语法和作用

    2024年02月17日
    浏览(52)
  • AIGC: 关于ChatGPT中Function Call的调用

    Function Call 概念 关于 GPT 中API的function参数,提供了一些能力 这个函数调用是 Open AI 在2023年的6.13号发布的新能力 根据它的官方描述, 函数调用能力可以让模型输出一个请求调用函数的消息 其中包含所需调用函数的信息,以及调用函数时所需携带的参数的信息 这种方式是一种

    2024年02月04日
    浏览(65)
  • 【JavaScript】手撕前端面试题:手写Object.create | 手写Function.call | 手写Function.bind

    🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结) 🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬 👉

    2024年02月21日
    浏览(69)
  • 【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(50)
  • 大模型开发(十一):Chat Completions模型的Function calling功能详解

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共6000余字,预计阅读时间约15~25分钟 | 满满干货(附代码案例),建议收藏!

    2024年02月16日
    浏览(51)
  • 开源模型应用落地-工具使用篇-Spring AI-Function Call(八)

        通过“开源模型应用落地-工具使用篇-Spring AI(七)-CSDN博客”文章的学习,已经掌握了如何通过Spring AI集成OpenAI和Ollama系列的模型,现在将通过进一步的学习,让Spring AI集成大语言模型更高阶的用法,使得我们能完成更复杂的需求。   是 Spring 生态系统的一个新项目,它

    2024年03月14日
    浏览(49)
  • 最新版KEIL error: non-ASM statement in naked function is not supported或者 ‘__STATIC_INLINE‘

    最新的KEIL5版本使用的默认的版本6的编译器,而固件库还是支持版本5的编译器 所以下面重新选keil5的编译器,但是我这边只有version6的编译器怎么办呢 可以到如下 官网下载 右上角搜索Arm Compiler for Embedded 找到如下界面 选择红框内容选择旧版本 需要注册填写信息才能下载 h

    2024年01月25日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包