第一个C 库:我不确定在哪里参考并声明我的变量

First c++ library: I am not sure where to reference and declare my variables

本文关键字:参考 声明 我的 变量 在哪里 不确定 第一个      更新时间:2023-10-16

我目前正在学习如何为我的mbed电子项目编写自己的库。到目前为止,我有两个文件cfextensions.cpp和cfextensions.h文件。我在cfextensions.h构造函数中引用了我的变量,并在我的cfextensions.cpp文件中更改了它们的值;但是,我的MBED C 编译器投掷:标识符" Phmin"是未识别的。我的代码是:

文件:cfextensions.h /* 文件:cfextensions.h

Header file for cfExtensions Library.
*/
#ifndef __cfExtns_H
#define __cfExtns_H
#include "mbed.h"
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//==================================
// Definitions
//==================================
#define CF_FILE_LOCATION  "local/settings.cf"     // File location local/settings.cf
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//==================================
// cfExtension Class
//==================================
class cfExtensions
{
public:
//---------------------------
// Function Prototypes
//---------------------------
        cfExtensions();                         // Constructor, Initialisation tasks
        void loadConfigFile();                  // Loads config file defined in CF_FILE_LOCATION
        void checkConfigForFirstStart();        // Check if MBED startup is the very first startup
        void getPhMaxValueFromConfigFile();     // Get PH Max value from config file
        void getPhMinValueFromConfigFile();     // Get PH Min value from config file
        void getKeyAndValue();

//---------------------------
// Variables
//---------------------------
        volatile bool pingTicked;
        bool linkedWithBaseStation;
        char *sbNameKey;
        char sbNameValue[BUFSIZ];
        char *sbFirstStartKey;
        char sbFirstStartValue[BUFSIZ];
        char *sbUseBaseStationKey;
        char sbUseBaseStationValue[BUFSIZ];
        char *sbPhMaxKey;
        char sbPhMaxValue[BUFSIZ];
        char *sbPhMinKey;
        char sbPhMinValue[BUFSIZ];
        float phMax;
        float phMin;

//---------------------------
// Devices
//--------------------------- 
};
#endif

文件:cfextensions.cpp

//================================
// Get PH Min Value from CF
//================================
void getPhMinValueFromConfigFile() {    
    /*
     * Get a configuration value.
     * Then attach the sbNameValue to SensorData json
     */
    if (cfg.getValue(sbPhMinKey, &sbPhMinValue[0], sizeof(sbPhMinValue))) {
        phMin = atof(sbPhMinValue);
    }
} // End of getPhMinValueFromConfigFile

我认为它应该是cfextensions.cpp文件中的 void cfExtensions::getPhMinValueFromConfigFile() { }

在CPP文件中将函数实现更改为

void cfExtensions::getPhMinValueFromConfigFile() {
  // etc ....
}

这里的关键是要使cfextensions ::在功能前。