2016-04-13 17 views
0

Bu kod parçasında neyin yanlış olduğunu bilen var mı? Karşılaştırılabilir sorular arasında sorunu göremiyorum.hata: dize sabitinden önce beklenen bildirim belirticileri veya '…'

Kod C ile yazılmıştır ve bu hatayı almaya devam ediyorum. Ben ... ifndefs yanlış olmalıdır emin olmak için gcc derleme hattına -D SET_MIN_TEMP=5 -D Set_MAX_TEMP=30 eklerim

#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

'Set_MAX_TEMP'! =' SET_MAX_TEMP' C harf duyarlı olduğu için. – Barmar

+2

Hangi satır için hata alıyorsunuz? Neden bunun gibi üst düzeydeki printf() satırlarınız var? – Barmar

+5

Makro tanımlanmadığında derleme zamanı hatalarına neden olmak istiyorsanız, # hata kodunu kullanın. – Barmar

cevap

3
Bir fonksiyonun dışında bir işlev çağrısı ( printf) kullanamazsınız

, sen #error bakmak shuold eğer

göster ... derlenmesini, hataları bildirmek istiyorum here

+0

" # ifndef "yazıyordu Bu çağrıları gizlemek ve hatayı önlemek için. – Barmar

+0

Evet, ama OP'nin yanlış argümanları (vaka) geçmesi gibi görünüyor, bu yüzden yanlış 'printf' ifadeleri kalıyor ... – mame98

+0

Bence konu budur - gerçekten neden" # ifndef 'olmadı "diye merak ediyordu Çalışıyor. Ve basit bir yazım hatası olduğu ortaya çıktı. – Barmar

İlgili konular