2012-08-13 3 views
1

외부 C 코드 (원래 내장 된 HW에서 실행 중)로 PC에서 작업해야하는데 수정이 허용되지 않습니다. 하나 개 .H 파일 모양이 같은에서ANSI C 변수 선언 구문 "+0"?

일부 변수 선언 : variableA의

extern int variableA; 
extern variableB; 
extern variableC+0; 
  • 선언은 분명하다.
  • 변수 B의 선언은 컴파일러를 통과하며 형식은 int로 간주됩니다.
  • 변수 C의 선언이 실패합니다.

질문 : 구문 어떤 종류의 variableC의 선언에 사용되는 ? 컴파일러가 그것을 받아들이도록 (어떻게 코드 수정이 허용되지 않습니까?) 어떻게 할 수 있습니까? 이것은 유효한 C 구문일까요?

프로젝트에 사용 된 컴파일러는 VS2008 내부 컴파일러입니다.

업데이트 : 다시 추적

을 포함, 어떤 #DEFINE는 구문을 변경하지 않습니다. 참고로,이 코드는 항공기의 HW에서 가져온 것이고 올바르게 컴파일됩니다 (HW 용 컴파일러 사용). 변수는 나에게 사용할 수있는 코드 부분에서 일반 변수로 사용됩니다 답장에 대한

variableC+0 = otherVar; 

감사합니다,이는 정말 해당 특정 컴파일러 작업, 무효 표준 C 코드 것으로 보인다.

+1

이것은 유효한 구문처럼 보이지 않습니다. 적어도 ANSI C에는 없습니까? – Eregrith

+5

어떤 다른 정보가 있습니까? variableC는 코드의 뒷부분에서 어떻게 사용됩니까? extern variableC + 0;이'extern a = 3 + 0; '과 같이 확장 될 수 있도록 매크로일까요? 이 코드가 성공적으로 컴파일되었다는 증거가 있습니까? 전처리 기 조건 때문에 컴파일되지 않은 코드입니까? –

+0

'int a + 0;'명령문은 의미가 없으며 비슷한 구조로 보입니다. –

답변

0

이 구문은 C 표준에서 의미가 없습니다.

+0

왜 downvoted? 잘못 됐나 ? – md5

+0

아마도 * 대답이 유용하지 않기 때문에 * 올바른지 (나는 downvote하지 않았다) – anatolyg

0

MSDN에 따르면이 구문은 유효하지 않습니다.

identifier: 

    nondigit 

    identifier nondigit 

    identifier digit 

nondigit: one of 

    _ a b c d e f g h i j k l m n o p q r s t u v w x y z 

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 

digit: one of 

    0 1 2 3 4 5 6 7 8 9 

전혀 아예 없습니다. 플러스 기호는 C와 유사한 언어 구문 분석기에서 표현식을 합산하기 위해 구문 분석됩니다.

+0

예, 마법 # 정의의 모든 것이 가능함 =) – Odysseus

+0

보증을 주셔서 감사합니다. 특정 컴파일러. 코드는 공중에서 가져온 것입니다. 예, 코드가 컴파일됩니다. 내가 사용하는 코드 부분에서 변수 "variableC + 0"은 variableC + 0 = otherVariable처럼 유효한 변수로 처리됩니다. –