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模板网!

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

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

相关文章

  • 【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日
    浏览(26)
  • 传统软件集成AI大模型——Function Calling

    目前为止好多人对chatGPT的使用才停留在OpenAI自己提供的网页端上,也许对GPT的了解还不够深入。最近稍微看了些大模型相关的内容深刻感觉到大模型技术对软件行业的影响。 本人并非数学专业,对大模型的理解也仅仅只是看了下transformar模型以及简单fine turn的原理。 了解到

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年03月14日
    浏览(41)
  • LeetCode报错解决 Char 5: error: non-void function does not return a value in all control paths

    在做LeetCode第268题\\\"丢失的数字\\\"的时候报了这个错误 原答案 答案修改为如下 正确。 分析:原答案使用IF语句时出错。原答案只有在if语句下才有返回值,尽管不会有其他情况,但严谨的编译器还是会报错,让你把其他情况都写清楚。 感谢这篇文章

    2024年02月03日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包