Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AVR / Linux GCC C项目的常见常量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在为 Linux AVR Arduino项目创建软件.显然,整个工作分为Eclipse中的几个项目(我没有使用Arduino IDE).我想为所有这些项目使用常见的,主要是字符串的常量.我还需要备用微控制器的RAM,因此需要编译时常量.我该如何最好地实现它?我的想法是为这些常量创建一个单独的,仅限标题的项目. 使用: class A { public: static const cha
我正在为 Linux AVR Arduino项目创建软件.显然,整个工作分为Eclipse中的几个项目(我没有使用Arduino IDE).我想为所有这些项目使用常见的,主要是字符串的常量.我还需要备用微控制器的RAM,因此需要编译时常量.我该如何最好地实现它?我的想法是为这些常量创建一个单独的,仅限标题的项目.

使用:

class A {
public:
    static const char * const StriNG;
    static const unsigned char BOOL;
};

不够好,因为我希望能够连接像这样的字符串常量:

class A {
public:
    static const char * const StriNG_PART1;
    static const char * const StriNG_PART2;
    static const unsigned char BOOL;
};
const char * const A::strinG_PART1 = "PART1_";
//const char * const A::strinG_PART2 = A::strinG_PART1 + "PART2"; //obvIoUsly won't compile
//const char * const A::strinG_PART2 = strcat("PART2",A::strinG_PART1); //this is not compile-time

我也不想使用define.我想用:

class A {
public:
    static const std::string StriNG_PART1;
    static const std::string StriNG_PART2;
}

它允许字符串连接并且是(AFAIK)编译时,但是std :: String在avr项目中不可用 – 或者我在这里错了,只是不知道如何使用它.

任何帮助赞赏.

解决方法

可以继续使用const char * const的当前想法(如果std :: String不可用).我建议只使用#define进行分配.例:

class A {
public:
    static const char * const StriNG_PART1;
    static const char * const StriNG_PART2;
    static const unsigned char BOOL;
};
#define PART1_ "PART1_"  // <--- for value assignent
#define PART2_ "PART2_"
const char * const A::strinG_PART1 = PART1_;
const char * const A::strinG_PART2 = PART1_ PART2_;  // <--- ok! concatenation by compiler

大佬总结

以上是大佬教程为你收集整理的AVR / Linux GCC C项目的常见常量全部内容,希望文章能够帮你解决AVR / Linux GCC C项目的常见常量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。