?? main.cc
字號(hào):
#include <stdio.h>
#include <string.h>
#define HZK_FILE "hzk12.bin"
#define HZK_DOT_FIZE 12
#define HZCODE_DEFIND_FILE "CONFIGHZ.H"
struct DefinedTok {
char Name[250] ;
int Value ;
} ;
struct DefinedTok _defineToks[200] ;
int defineTokIndex;
int defineTokLast ;
FILE *configFile ;
char configBuffer[200] ;
int configIndex ;
int configSize ;
int Push_If_Endif_Match_Counter ;
char *CompressLeadSpaces(const char *pSrc)
{
char *pDest ;
pDest = (char *)pSrc ;
while( *pDest == ' ' && pDest ) pDest++ ;
return pDest ;
}
int ReadConfigLine()
{
char c ;
size_t st ;
configSize = 0 ;
configBuffer[configSize] = 0 ;
st = fread(&c,1,1,configFile);
while(st && (c != '\n' && c != '\r') ) {
configBuffer[configSize++] = c ;
configBuffer[configSize] = 0 ;
st = fread(&c,1,1,configFile);
}
if( st & (c == '\n' || c == '\r') ) {
st = fread(&c,1,1,configFile);
}
return configSize ;
}
int findDefineTok(char *pDef)
{
int i ;
for(i = 0 ; i < defineTokLast ; i++) {
if( strcmp(_defineToks[i].Name,pDef) == 0 ) {
return 1 ;
}
}
return 0 ;
}
void ConfigDefine()
{
size_t i ;
char *p ;
char *pConf ;
size_t max_len,size ;
pConf = CompressLeadSpaces(configBuffer) ;
p = strtok(pConf,"#define") ;
pConf = CompressLeadSpaces(p) ;
max_len = strlen(pConf) ;
p = pConf ;
while( *p != ' ' && p ) {
p++ ;
}
*p = 0x0 ;
if( !findDefineTok(pConf) ) {
_defineToks[defineTokLast].Value = -1 ;
strcpy(_defineToks[defineTokLast].Name,pConf) ;
if( strlen(pConf) < max_len ) {
p = &pConf[strlen(pConf)+1] ;
pConf = CompressLeadSpaces(p) ;
if( pConf ) {
_defineToks[defineTokLast].Value = atoi(pConf) ;
}
}
defineTokLast++ ;
}
}
void Skip_LinesUntil_Endif()
{
char *pConf ;
int Skip_If_Endif_Match_Counter ;
Skip_If_Endif_Match_Counter = 1 ;
while(ReadConfigLine()) {
pConf = CompressLeadSpaces(configBuffer) ;
if( strncmp(pConf,"#if",3) == 0 ) {
Skip_If_Endif_Match_Counter++ ;
}
if( strncmp(pConf,"#endif",5) == 0 ) {
Skip_If_Endif_Match_Counter-- ;
}
if( Skip_If_Endif_Match_Counter == 0 ) {
return ;
}
}
}
void ConfigIf_Defined(char *pConf)
{
char *p ;
p = pConf ;
while( *p != ')' && p ) p++ ;
*p = 0x00 ;
if( findDefineTok(pConf) ) {
}
}
void ConfigIf_Not_Defined(char *pConf)
{
char *p ;
p = pConf ;
while( *p != ')' && p ) p++ ;
*p = 0x00 ;
if( findDefineTok(pConf) ) {
Skip_LinesUntil_Endif() ;
}
}
void ConfigIf()
{
char *p ;
char *pConf ;
pConf = CompressLeadSpaces(configBuffer) ;
if( strncmp(pConf,"#if",3) == 0 ) {
pConf += 3 ;
}
pConf = CompressLeadSpaces(pConf) ;
if( strncmp(pConf,"defined(",8) == 0 ) {
pConf += 8 ;
ConfigIf_Defined(pConf) ;
}
if( strncmp(pConf,"!defined(",9) == 0 ) {
pConf += 9 ;
ConfigIf_Not_Defined(pConf) ;
}
}
void ConfigInclude()
{
}
void ProcessConfigLine()
{
char *pConf ;
pConf = configBuffer ;
while( *pConf == ' ' && pConf ) pConf++ ;
if( strncmp(pConf,"#if",3) == 0 ) {
ConfigIf() ;
}
else if( strncmp(pConf,"#define",7) == 0 ) {
ConfigDefine() ;
}
else if( strncmp(pConf,"#include",8) == 0 ) {
ConfigInclude() ;
} ;
}
int Matcher_If_Endif()
{
char *pConf ;
configFile = fopen(HZCODE_DEFIND_FILE,"r");
while(ReadConfigLine()) {
pConf = CompressLeadSpaces(configBuffer) ;
if( strncmp(pConf,"#if",3) == 0 ) {
Push_If_Endif_Match_Counter++ ;
}
if( strncmp(pConf,"#endif",5) == 0 ) {
Push_If_Endif_Match_Counter-- ;
}
}
fclose(configFile) ;
return Push_If_Endif_Match_Counter == 0 ;
}
int main()
{
defineTokIndex = 0 ;
defineTokLast = 0 ;
Push_If_Endif_Match_Counter = 0 ;
if( ! Matcher_If_Endif() ) return 1 ;
configFile = fopen(HZCODE_DEFIND_FILE,"r");
while(ReadConfigLine()) {
printf("%s\n",configBuffer) ;
ProcessConfigLine() ;
}
fclose(configFile) ;
return 0 ;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -