gcc 에서 데이터 타입에 관한 질문 입니다.

yimwooya의 이미지

borland c 에서는 데이터 타입을 세로 정의 할때
typedef unsigned int INT16U; .. 이런 형식으로 하는데

gcc에서는 이것이 안되네요..

gcc에서 typedef 대신 사용하는 명령어가 따로 있는지 ?

mykldp의 이미지

typedef 는 표준입니다. 물론 gcc 에서도 사용할 수 있습니다. 그냥 안된다고 하지 말고, 어떻게 사용하셨는지와 컴파일시에 어떤 에러가 났는지를 올려주셔야 제대로 답을 해드릴 수 있습니다 :)

mastercho의 이미지

// VC++로 콘솔모드에서 컴파일할때 사용
// #include "stdafx.h"

#include <iostream>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include <vector>
#include <utility>

using namespace std;

typedef unsigned int INT16U;

int main()
{
	
}

g++ 로 잘 컴파일 됩니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

yimwooya의 이미지

컴파일러는 arm-linux-gcc 이고요..
ucos를 포팅할려고 합니다..
문제가 되는 부분은 typedef, extern 부분입니다.

에러는
Error: bad instruction 'typedef unsigned char BOOLEAN'
" : ' "

Error: bad instruction 'extern unsigned char OSTickDOSCtr'

에러나는 부분은 진하게 표시를 하였읍니다.. 외 컴파일이 안되죠..

/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
* 80x86/80x88 Specific code
* LARGE MEMORY MODEL
*
* File : OS_CPU.H
* By : Jean J. Labrosse
*********************************************************************************************************
*/

#ifdef OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT extern
#endif

/*
*********************************************************************************************************
* 데이터 타입
* (컴파일러 의존적 코드)
*********************************************************************************************************
*/

typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /* 무부호 8비트 데이터 */
typedef signed char INT8S; /* 부호있는 8비트 데이터 */
typedef unsigned int INT16U; /* 무부호 16비트 데이터 */
typedef signed int INT16S; /* 부호있는 16비트 데이터 */
typedef unsigned long INT32U; /* 무부호 32비트 데이터 */
typedef signed long INT32S; /* 부호있는 32비트 데이터 */
typedef float FP32; /* 단정도 부동소수 데이터 */
typedef double FP64; /* 배정도 부동소수 데이터 */

typedef unsigned int OS_STK; /* 각 스택 요소는 16비트 크기임 */
#define BYTE INT8S /* uC/OS v1.xx를 고려한 역호환성 데이터 타입 */
#define UBYTE INT8U /* uC/OS-II에서는 필요치 않다 */
#define WORD INT16S
#define UWORD INT16U
#define LONG INT32S
#define ULONG INT32U

/*
*********************************************************************************************************
* Intel 80x86 (리얼-모드, 라지 모델)
*
* 방법 #1: 단순히 명령을 사용해서 인터럽트를 비활성화/활성화한다. 크리티컬 섹션 코드를 호출할 경우
* 호출전에 비활성화 상태였더라도 호출후에는 활성화 상태가 된다.
* OS_CPU_A.ASM의 OSIntCtxSw() 함수에서 상수를 10에서 8로 수정해야 한다.
*
* 방법 #2: 인터럽트의 상태를 보존하면서 비활성화/활성화 한다. 즉, 인터럽트 비활성화 상태에서 크리티컬
* 센션 코드를 호출하더라도 다시 비활성화 상태가 보존된다.
* 이 경우 OS_CPU_A.ASM의 OSIntCtxSw() 함수에서 상수를 8에서 10으로 수정해야 한다.
*
*********************************************************************************************************
*/
#define OS_CRITICAL_METHOD 2

#if OS_CRITICAL_METHOD == 1
#define OS_ENTER_CRITICAL() asm CLI /* 인터럽트 비활성화 */
#define OS_EXIT_CRITICAL() asm STI /* 인터럽트 활성화 */
#endif

#if OS_CRITICAL_METHOD == 2
#define OS_ENTER_CRITICAL() asm {PUSHF; CLI} /* 인터럽트 비활성화 */
#define OS_EXIT_CRITICAL() asm POPF /* 인터럽트 활성화 */
#endif

/*
*********************************************************************************************************
* Intel 80x86 (리얼-모드, 라지 모델) 기타 설정
*********************************************************************************************************
*/

#define OS_STK_GROWTH 1 /* 스택이 상위 메모리에서 하위 메모리로 커짐 */

#define uCOS 0x80 /* 문맥전환용 인터럽트 벡터 번호 */

#define OS_TASK_SW() asm INT uCOS

/*
*********************************************************************************************************
* 전역 변수
*********************************************************************************************************
*/

OS_CPU_EXT INT8U OSTickDOSCtr; /* DOS 틱 핸들러를 호출하기 위해 사용하는 카운터 */

하드웨어, 프로그램, 임베디드 ..
관심을 가지고 노력중.

yimwooya의 이미지

음.. 원인을 알았습니다.. :idea:
asm 파일에.. os_cpu.h 위의 파일을 include 하였디만 나는 에러였어요..
ㅋㅋ.. 음. asm에 추가 되는 헤드파일에는 typedef, extern 을 사용할수 업네요.. 그냥 asm 에서.. #define 이 동작을 하여 될줄 알았는데..

님들 감사..

하드웨어, 프로그램, 임베디드 ..
관심을 가지고 노력중.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.