2016-04-13 10 views
0

このコードは何が間違っているのですか?私は匹敵する質問の中で問題を見つけることができません。エラー:文字列定数の前に予期される宣言指定子または '...'

コードはCで書かれており、このエラーが発生しています。あなたならば、私はあなたが関数の外部関数呼び出し(printf)を使用することはできません... ifndefsが偽であるべきことを確認するためにgccのコンパイル行に

#ifndef CONFIG_H 
#define CONFIG_H 


#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <stdint.h> 

#ifndef RUN_AVG_LENGTH 
    #define RUN_AVG_LENGTH 5 
#endif 

#ifndef SET_MIN_TEMP 
    printf("please set SET_MIN_TEMP \n"); 
#endif 

#ifndef SET_MAX_TEMP 
    printf("please set SET_MAX_TEMP \n"); 
#endif 

typedef uint16_t sensor_id_t; 
typedef uint16_t room_id_t; 
typedef double sensor_value_t; 
typedef time_t sensor_ts_t;  // UTC timestamp as returned by time() - notice that the size of time_t is different on 32/64 bit machine 

typedef struct { 
    sensor_id_t id; 
    sensor_value_t value; 
    sensor_ts_t ts; 
} sensor_data_t; 

typedef struct { 
    sensor_id_t sensor_id; 
    room_id_t room_id; 
    double running_avg[5]; 
    sensor_ts_t timestamp; 
} sensor_node_t; 


#endif // CONFIG_H 
+6

を参照してください。 – Barmar

+2

どのラインでエラーが発生していますか?なぜトップレベルに 'printf()'行があるのですか? – Barmar

+5

マクロが定義されていないときにコンパイル時にエラーが発生した場合、 '#error'を使います。 – Barmar

答えて

3

-D SET_MIN_TEMP=5 -D Set_MAX_TEMP=30を追加し、あなたは#errorを見てみましょうshuoldありませんCは大文字と小文字が区別されるので、コンパイル時にエラーを報告したい...

は!= `SET_MAX_TEMP` Set_MAX_TEMP`` here

+0

'#ifndef'は想定されていますこれらの呼び出しを非表示にし、エラーを防ぐことができます。 – Barmar

+0

はい、OPが間違った引数(大文字)を渡したようですので、間違った 'printf'文は残ります... – mame98

+0

私はそれがポイントだと思っています。なぜ'#ifndef' wasn '働いている。そしてそれは単純なタイプミスであることが判明しました。 – Barmar

関連する問題