日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于.c和.h 和定义变量的问题

發布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于.c和.h 和定义变量的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最初調試的時候是因為有個錯誤在wavplay.h文件中

?

?

于是我跳到了recorderl.h中:從圖中看到引用了main.h

?

?

出現這個問題的具體原因還是不太清楚:

不過我任務是因為:

wavplay.h中定義了? __WaveHeader?? 變量

在main.h文件中引用了wavplay.h

而在wavplay.h中試圖引用main.h里的 __WaveHeader? 然而main.h里沒有定義__WaveHeader;

?

最好在.h文件中不要 定義變量,,而是在.c中定義,在.h中extern該變量.

我想把全局變量都設置在,? main.c中

把所有頭文件都集中在? main.h中

然后這樣就可以在,所有.c和.h文件中引用main.h了...

現在就去試一下,,,看一下結果如何

?

其實在 #include各個頭文件的時候是有次序的,,,只不過有的時候他們關聯不大,就不需要排序了

比如: 要先include "sys.h"? 然后才能定義一些東西,

否則會::我把 include "sys.h"? 注釋掉之后::

///

編譯的過程是從頭文件開始的,,如果過程中有一個地方出錯,它可能就不在往下編譯了,

所以找到第一個錯誤,,解決它,,,其它的頭文件才能起作用,,,

?所以這種方法會帶來很多次序的考慮

?

不知道這樣程序占用的空間會不會變::應該不會變...

?///

?

#ifndef _main_H
#define _main_H
#include "sys.h"

//RIFF塊
typedef __packed struct
{
??? u32 ChunkID;?? ??? ?? ??? ?//chunk id;這里固定為"RIFF",即0X46464952
??? u32 ChunkSize ;?? ??? ?? ??? ?//集合大小;文件總大小-8
??? u32 Format;?? ?? ??? ??? ??? ?//格式;WAVE,即0X45564157
}ChunkRIFF ;


//fmt塊
typedef __packed struct
{
? u32 ChunkID;?? ??? ?? ??? ?//chunk id;這里固定為"fmt ",即0X20746D66
? u32 ChunkSize ;?? ??? ?? ??? ?//子集合大小(不包括ID和Size);這里為:20.
? u16 AudioFormat;?? ? ??? ?//音頻格式;0X01,表示線性PCM;0X11表示IMA ADPCM
?? ?u16 NumOfChannels;?? ??? ?//通道數量;1,表示單聲道;2,表示雙聲道;
?? ?u32 SampleRate;?? ??? ??? ?//采樣率;0X1F40,表示8Khz
?? ?u32 ByteRate;?? ??? ??? ?//字節速率;
?? ?u16 BlockAlign;?? ??? ??? ?//塊對齊(字節);
?? ?u16 BitsPerSample;?? ??? ?//單個采樣數據大小;4位ADPCM,設置為4
//?? ?u16 ByteExtraData;?? ??? ?//附加的數據字節;2個; 線性PCM,沒有這個參數
}ChunkFMT;?? ?? ?


//fact塊
typedef __packed struct
{
??? u32 ChunkID;?? ??? ?? ??? ?//chunk id;這里固定為"fact",即0X74636166;
??? u32 ChunkSize ;?? ??? ?? ??? ?//子集合大小(不包括ID和Size);這里為:4.
??? u32 NumOfSamples;?? ? ??? ?//采樣的數量;
}ChunkFACT;


//LIST塊
typedef __packed struct
{
??? u32 ChunkID;?? ??? ?? ??? ?//chunk id;這里固定為"LIST",即0X74636166;
??? u32 ChunkSize ;?? ??? ?? ??? ?//子集合大小(不包括ID和Size);這里為:4.
}ChunkLIST;


//data塊
typedef __packed struct
{
??? u32 ChunkID;?? ??? ?? ??? ?//chunk id;這里固定為"data",即0X5453494C
??? u32 ChunkSize ;?? ??? ?? ??? ?//子集合大小(不包括ID和Size)
}ChunkDATA;

//wav頭
typedef __packed struct
{
?? ?ChunkRIFF riff;?? ?//riff塊
?? ?ChunkFMT fmt; ??? ?//fmt塊
//?? ?ChunkFACT fact;?? ?//fact塊 線性PCM,沒有這個結構體?? ?
?? ?ChunkDATA data;?? ?//data塊?? ??? ?
}__WaveHeader;


//wav 播放控制結構體
typedef __packed struct
{
? u16 audioformat;?? ??? ??? ?//音頻格式;0X01,表示線性PCM;0X11表示IMA ADPCM
?? ?u16 nchannels;?? ??? ??? ??? ?? //通道數量;1,表示單聲道;2,表示雙聲道;
?? ?u16 blockalign;?? ??? ??? ??? ?//塊對齊(字節); ?
?? ?u32 datasize;?? ??? ??? ??? ?? //WAV數據大小

? u32 totsec ;?? ??? ??? ??? ???? //整首歌時長,單位:秒
? u32 cursec ;?? ??? ??? ??? ???? //當前播放時長
?? ?
? u32 bitrate;?? ?? ??? ??? ??? ?? //比特率(位速)
?? ?u32 samplerate;?? ??? ??? ??? ?//采樣率
?? ?u16 bps;?? ??? ??? ??? ??? ?????? //位數,比如16bit,24bit,32bit
?? ?
?? ?u32 datastart;?? ??? ??? ??? ?? //數據幀開始的位置(在文件里面的偏移)
}__wavctrl;


#include "stdio.h"
#include "usart.h" ??? ??? ?
#include "malloc.h"

#include "ff.h" ?
#include "exfuns.h"? ?
#include "wavedac.h"
#include "wavplay.h"
#include "timer4.h"???? //現在改成了timer4
#include "stm32f10x_dac.h"
#include "stdlib.h"???? //字符串和浮點數的相互轉換庫

#include "key.h"
#include "txt.h"
#include "adc.h"
#include "led.h"

//下面是錄音頭文件
#include "recorderl.h"
#include "timerl.h"
#include "adcl.h"
#include "dmal.h"
#include "ledl.h"

//#include "memory.h"
#include "string.h"

#include "flash.h"??? //關于flash的頭文件

#include "sdio_sdcard.h"?

?

?

注意以上是我的一個頭文件,,,,這個文件是main.h文件

因為我感覺頭文件太多,所以就建立了一個總的頭文件,

結果引入 main.h不但沒有省下多少力氣,反而更加費力了,

原因在于你需要弄好這個幾個頭文件的順序<><><><>

不過經驗告訴我,,,還是不要建什么main.h了,,{不過總要有排序的,,在主函數中#include也是有順序的.}

?

一開始我想初始化SD卡,,起初程序好好的

但是不知道為什么,,后來就不行了,,而且也沒有報錯

后來找到修改的地方,我只是在main.h中又加入了幾個.h文件

可能是這個原因導致SD卡不能初始化,具體是哪個還不太清楚????

轉載于:https://www.cnblogs.com/chulin/p/8776710.html

總結

以上是生活随笔為你收集整理的关于.c和.h 和定义变量的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。