全局变量的C类冲突

时间:2017-07-08 05:00:18

标签: c

我想使用一个文件来获取所有#define和常量:示例

 #ifndef CONSTANTS_H_
 #define CONSTANTS_H_

 #include <avr/io.h>

 //OVERALL DEFS
 #define TRUE 1
 #define FALSE 0


 // CLK_32MHz.h
 const uint8_t NEW_CLOCK_FREQ = 0b00000010;

 #endif /* CONSTANTS_H_ */

然后用另一个文件来调用它。例如:

#ifndef CLK_32MHZ_H_
#define CLK_32MHZ_H_

#include <avr/io.h>
#include "constants.h"

extern uint8_t NEW_CLOCK_FREQ;    

void Change_CLK_32HZ(){

    //Set the clk config
    OSC_CTRL = NEW_CLOCK_FREQ;

    //Wait for the right flag to be set in the OSC_STATUS reg 
    while((OSC_STATUS & PIN1_bm) != PIN1_bm);

    //Write the “IOREG” signature to the CPU_CCP reg
    CPU_CCP = CCP_IOREG_gc;

    //Select the new clock source in the CLK_CTRL reg
    CLK_CTRL = CLK_SCLKSEL_RC32M_gc;

    return;
}
#endif /* CLK_32MHZ_H_ */

这是我的主要功能:

#include <avr/io.h>
#include "constants.h"
#include "Clk_32MHz.h"


int main(void){

}

这是我在终端上遇到的错误:

'NEW_CLOCK_FREQ'文件的冲突类型限定符:Clk_32MHz.h 先前对'NEW_CLOCK_FREQ'的定义是File:constants.h

1 个答案:

答案 0 :(得分:2)

尝试以下方法......

在header.h中

extern const uint8_t myconst;

在foo.c中:

#include "header.h"
const uint8_t myconst = 42;