建议将全局变量创建在.h/.cpp文件中,其中.h文件声明变量,.cpp文件中定义变量值。
在.h文件中定义变量,则工程多次#include该文件会出现“该文件已经被使用”。
具体示例如下:
synchronize_data.h
//
// Created by qiaowei on 2023-10-28.
//#ifndef CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H
#define CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H#include <QChar>
#include <QSemaphore>/*** @date 2023-10-28* @author qiao wei* @brief 要传输的总数据数量。*/
extern const int kDataSize;/*** @date 2023-10-28* @author qiao wei* @brief 数据池容量。*/
extern const int kBufferSize;/*** @date 2023-10-28* @author qiao wei* @brief 数据池。初始阶段,数据池未存放任何数据*/
extern QChar buffer[];/*** @date 2023-10-30* @author qiao wei* @brief 自由信号标。在初始阶段有kBufferSize个自由信号标可用。数据池每放入1个数据,自由信号标就减1个。*/
extern QSemaphore free_semaphore;/*** @date 2023-10-30* @author qiao wei* @brief 可用信号标。在初始阶段没有数据可用,所以可用信号标数量为0。当数据池放入1个还未用的数据时,可用信号标就增加1个。*/
extern QSemaphore used_semaphore;#endif //CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H
synchronize_data.cpp
//
// Created by qiaowei on 2023-11-01.
//#include "synchronize_data.h"const int kDataSize{1000};const int kBufferSize{4};QChar buffer[kBufferSize];QSemaphore free_semaphore{kBufferSize};QSemaphore used_semaphore{0};