os161 프로젝트에서 작업하고 있습니다. src/kern/include에 array.h가 포함되어있는 파일을 생성합니다. 컴파일 할 때 다음과 같은 오류가 발생했습니다 : ./../include/array.h:85 : 오류 : '=', ',', ';', 'asm'또는 '속성' '부호' ../../include/array.h:91 오류 : 예상 '=', ',', ';', 'ASM'또는 '속성'무효 '이전오류가 발생하기 전에 OS161에서 '=', ',', ';', 'asm'또는 '__attribute__'이 필요합니다.
코드는 같다 :
#ifndef ARRAYINLINE
#define ARRAYINLINE INLINE
#endif
ARRAYINLINE unsigned --------------line 85 error
array_num(const struct array *a)
{
return a->num;
}
ARRAYINLINE void * --------------line 91 error
array_get(const struct array *a, unsigned index)
{
ARRAYASSERT(index < a->num);
return a->v[index];
}
하고 이런 종류의 오류는 모든 라인에서 일어난 INLINE 또는 ARRAYINLINE 같은 것을 가지고있다. 이 array.h 파일이 제공되며 변경하지 않았습니다. 정말로 이유를 알 수 없습니다.
오류는 컴파일러가 '인라인'이 무엇인지 이해할 수 없다고 말합니다. 어쩌면'#define ARRAYINLINE INLINE'은'define ARRAYINLINE inline'을 사용하여 컴파일러가 함수를 '인라인'하도록 요구할 수 있습니까? 그렇지 않다면, 컴파일하는 동안'INLINE'이 정의되어 있습니까? –
전처리 기 후 프로그램 텍스트를 가져 와서 표시하십시오. 예 : gcc의 경우 "-E"옵션입니다. 가장 가능성이 큰 변형은 인라인 또는 이상한 정의가 아닙니다. – Netch
const 구조체 배열을 추가 할 수 있습니까? 그리고 조금 더 많은 코드가 있습니다. 컴파일 명령은 무엇입니까? – Patapoom