구현부 선언부?
글쓴이: morgana / 작성시간: 수, 2006/11/15 - 2:43오후
안녕하세요.
공부라는걸 시작한지 얼마 안되는 학생입니다.
OS시간에 들은걸 간단하게 구현하라길래, 코딩해 보는도중 궁금한점이 생겨서 질문드립니다.
#include
#include
struct process{
char *name;
struct resource *assmnt;
struct resource *request;
};
struct resource{
char *name;
struct process *request;
struct process *assmnt;
};
void main(){
int size;
scanf("%d",&size); //333333333333
struct process *ob=(struct process *)malloc(sizeof(struct process)*size); //22222222222
}
왜 이렇게 코딩을 하면 안되는건가요?
2시간정도 이곳저곳을 검색해보니 선언부에서는 선언만 하고 구현은 안된다는 말씀들만 본거 같네요.
2번과 3번의 위치를 바꿔보면 컴파일은 되는데 원하는게 아니라서요.
구현부와 선언부에 관해서 간단하게 설명좀 부탁드리겠습니다.
Forums:
int size; scanf("%d",&size);
int size;
scanf("%d",&size); //333333333333
struct process *ob=(struct process *)malloc(sizeof(struct process)*size); //22222222222
대신
int size;
struct process *ob;
scanf("%d",&size); //333333333333
ob=(struct process *)malloc(sizeof(struct process)*size); //22222222222
이렇게 하셔야 합니다.
C++은 그렇지 않지만, C에서는 선언부와 구현부가 나누어져 있기 때문이죠.
선언부 두 줄은 int형 size와 struct process형 포인터 ob를 선언하고,
구현부에서는 각각 size에 값을 읽어들이는 일과, ob에 동적 메모리 할당을 합니다.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
최신 C 표준인
최신 C 표준인 C99에서는 C++처럼도 쓸 수 있다고 합니다.
앗 실수. '항상 ISO/IEC
앗 실수.
'항상 ISO/IEC 9899:1999 표준을 생각하자'라는 C 프로그래밍 신념(?)을 세워놓고서도 까먹네요.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
정답 : 예전
정답 : 예전 컴파일러로 위 코드를 돌리면 컴파일 안된다;;
감사합니다 (_ _)
답변해 주신분들 감사합니다.
언제나 느끼지만 기초가 중요하군요...
=======================================
아프다...
=======================================
.
댓글 달기