2016-11-24 1 views
1

다음 오류가 발생합니다. 오류 : <command-line> : 0 : 9

# make clean && make all 
g++ -g3 -funroll-loops -fomit-frame-pointer -m32 -march=pentium3 -mmmx -msse -mfpmath=sse -Wall -Woverloaded-virtual -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -g3 -g -c -DSYS_DAB=0 -DDVBAPI_V5 -DNEW_FFMPEG -DDEBUG -DREELVDR -DUSE_PIP -DUSEMYSQL -DDEVICE_ATTRIBUTES -DUSE_CRASHLOG -DUSE_JUMPPLAY -DUSE_LIEMIEXT -DUSE_MCLI -DUSE_PLUGINMISSING -DUSE_SETUP -DUSE_YAEPG -DUSE_BOUQUETS -DUSE_DELAYED_TRICKMODE -DUSE_LIVEBUFFER -DUSE_TINYXML -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_USE_GRAPHTFT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DAPIVERSNUM=20200 -DDEBUG -DREELVDR -DPLUGIN_NAME='"femon"' -DPLUGIN_NAME_I18N='"femon"' -I./include -I../../../vdr/include -I../../../vdr/include -I/usr/src/linux-headers-4.4.0-47-generic/include/config/dvb/include -I../../../vdr/../tinyxml -I../../../vdr -I../..//usr/src/linux-headers-4.4.0-47-generic/include/config/dvb/include -o femon.o femon.c 
<command-line>:0:9: error: expected identifier before numeric constant 
<command-line>:0:9: error: expected ‘}’ before numeric constant 
<command-line>:0:9: error: expected unqualified-id before numeric constant 
In file included from ../../../vdr/include/vdr/dvbdevice.h:13:0, 
       from ../../../vdr/include/vdr/menuitems.h:14, 
       from ../../../vdr/include/vdr/menu.h:18, 
       from femon.c:16: 
/usr/include/linux/dvb/frontend.h:345:1: error: expected declaration before ‘}’ token 
}; 
^ 

나는 제대로 frontend.h} 폐쇄 이것을하지 않는 것이 생각했다. 따라서 visyntax on을 사용하여 에있는 모든 대괄호 }을 확인했지만 괜찮습니다. 나는 길을 잃고 어디를보아야할지 모르겠다. 자세한 정보가 필요하면 알려주십시오.

frontend.h에서의 대응 위치는 다음

312 enum fe_pilot { 
313   PILOT_ON, 
314   PILOT_OFF, 
315   PILOT_AUTO, 
316 }; 
317 
318 enum fe_rolloff { 
319   ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */ 
320   ROLLOFF_20, 
321   ROLLOFF_25, 
322   ROLLOFF_AUTO, 
323 }; 
324 
325 enum fe_delivery_system { 
326   SYS_UNDEFINED, 
327   SYS_DVBC_ANNEX_A, 
328   SYS_DVBC_ANNEX_B, 
329   SYS_DVBT, 
330   SYS_DSS, 
331   SYS_DVBS, 
332   SYS_DVBS2, 
333   SYS_DVBH, 
334   SYS_ISDBT, 
335   SYS_ISDBS, 
336   SYS_ISDBC, 
337   SYS_ATSC, 
338   SYS_ATSCMH, 
339   SYS_DTMB, 
340   SYS_CMMB, 
341   SYS_DAB, 
342   SYS_DVBT2, 
343   SYS_TURBO, 
344   SYS_DVBC_ANNEX_C, 
345 }; 
346 
347 /* backward compatibility */ 
348 #define SYS_DVBC_ANNEX_AC  SYS_DVBC_ANNEX_A 
349 #define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */ 
350 
351 /* ATSC-MH */ 
352 
353 enum atscmh_sccc_block_mode { 
354   ATSCMH_SCCC_BLK_SEP  = 0, 
355   ATSCMH_SCCC_BLK_COMB  = 1, 
356   ATSCMH_SCCC_BLK_RES  = 2, 
357 }; 
358 
359 enum atscmh_sccc_code_mode { 
360   ATSCMH_SCCC_CODE_HLF  = 0, 

================================ ===================

여기에 -E 옵션의 출력은 다음과 같습니다.

36348 enum fe_delivery_system { 
36349 SYS_UNDEFINED, 
36350 SYS_DVBC_ANNEX_A, 
36351 SYS_DVBC_ANNEX_B, 
36352 SYS_DVBT, 
36353 SYS_DSS, 
36354 SYS_DVBS, 
36355 SYS_DVBS2, 
36356 SYS_DVBH, 
36357 SYS_ISDBT, 
36358 SYS_ISDBS, 
36359 SYS_ISDBC, 
36360 SYS_ATSC, 
36361 SYS_ATSCMH, 
36362 SYS_DTMB, 
36363 SYS_CMMB, 
36364 
36365 # 341 "/usr/include/linux/dvb/frontend.h" 
36366 0 
36367 # 341 "/usr/include/linux/dvb/frontend.h" 3 4 
36368  , 
36369 SYS_DVBT2, 
36370 SYS_TURBO, 
36371 SYS_DVBC_ANNEX_C, 
36372 }; 
+1

매크로 이름 충돌이있을 수 있습니다 - 선행 처리기를 통해 코드를 실행하여 현재 상황을 확인하십시오 ('g ++ -E ...'). –

+0

@PaulR 단순히'g ++ -E -g3 -funroll-loops -fomit-frame-pointer -m32 -march = pentium3 ...'을 실행합니다. 나는 링커 경고를 받는다 :'g ++ : 경고 : femon.o : 링커 입력 파일은 링크가 완료되지 않았기 때문에 사용되지 않았다 .' – musbach

+1

아마도'-o femon.o'에 남았을 것입니다 - 단지 전 처리기를 실행하기를 원합니다. 그러므로'g ++ -E .. 당신의 다른 옵션들이 ~ -o ... femon.c> femon.src'을 사용하고 나서 'femon.src'를보고 무슨 일이 일어나는지 보아라. (그냥 복사하여 명령 행에 붙여 넣기 만하면됩니다.) –

답변

1

기호 SYS_DAB과 충돌이 있습니다. 이것을 명령 행 (-DSYS_DAB=0)에서 값 0의 매크로로 정의하므로, 컴파일러가 fe_delivery_system의 열거 형 정의에 도달하면 을 볼 수있는 0이 표시됩니다.

이 기호는 두 가지 용도로 사용되기 때문에 이름 중 하나의 이름을 바꾸어야합니다. SYS_DAB_ 또는 똑같이 창조적 인 것.

+1

이것은 오류를 이해하는 가장 좋은 방법입니다. 나는'SYS_DAB = 0'을 제거하고 작동합니다. 고마워. – musbach

+0

위대한 - 당신이 해결책을 발견하게 기쁘다! –

관련 문제