C언어 Tip
-
Incompatible implicit declaration of built-in function ‘******’C언어 Tip 2019. 2. 2. 20:22
컴파일을 하는데 자꾸 Incompatible implicit declaration of built-in function ‘free’ 이런 경고가 뜬다. 실행은 잘 된다만 무엇인가 불안하다. 찾아보니 'free()'함수를 사용하기위해선 #include 를 해야했었다. 앞으로 이런 경고가 뜨면 #include 를 빼먹은게 있나 꼭 참고해야겠다. 이상! 참고 : https://stackoverflow.com/questions/7050798/incompatible-implicit-declaration-of-built-in-function-malloc
-
request for member '*******' in something not a structure or unionC언어 Tip 2019. 2. 2. 17:10
구조체 관련해서 컴파일 시 에러 “request for member '*******' in something not a structure or union”로 떠서 많이 당황했다. 논리적으로는 오류가 없다고 생각했었기 때문이다. 그래서 검색결과 오류의 결과를 찾을 수 있었는데 1. 구조체를 포인터로 선언할경우, 혹은 함수의 매개변수로써 구조체를 포인터로 사용하게 되면구조체의 멤버변수(구조체 안에 있는 변수들은) '.'이 아닌 '->'로 참고를 해야한다. ex) int LNext(List * plist, LData * pdata){ if(plist->curPosition >= (plist->numOfData)-1) return FALSE; *pdata = plist->arr[++(plist->curPosit..
-
2차원 배열(2차배열) 선언할때 주의해야할점!C언어 Tip 2018. 12. 30. 01:17
아래 사진처럼, 2차배열을 만들고싶다. 혹은 선언한다 싶을때는, findMostValue(int array[][COLS]) 인자값에 배열을 넣되, 두번째 []에는 값을 넣어야한다.(자신이 만든 행렬에서 열의 크기로 하면되겠죠?) 따라서 findMostValue(int array[][])는 문법적 오류이다. 그리고 main함수에서 불러올때는 int main(){findMostValue(내가만든배열이름);}만 하면된다. main함수에서 불러오는건 간편한데, 저렇게 함수 정의 및 선언할때는 두번째 []에는 반드시 값이 있어야 에러가 나지않는다는 점! 참고하자! 123456789101112131415int findMostValue(int array[][COLS]){ int r,c,maximum=array[0][..
-
함수에서 배열 매개변수를 사용할때 주의할 점!C언어 Tip 2018. 12. 29. 11:58
특정한 함수의 매개변수로 배열을 넣고싶을때 그 배열의 크기는 그 함수안에서 sizeof로 구할수 없다는 것을 오랜 고민끝에 깨달았다. 그래서 함수에 배열을 인자로 보낼때, 배열의 사이즈도 같이 보내야한다. 기억하자! 아래는 예시의 소스코드와 실행결과 1234567891011121314151617181920212223242526272829303132333435363738394041#include #include void printArray(int array[],int size);int findMinimumNumber(int array[],int size);int main(void){ srand((unsigned)time(NULL)); int array[10],i; for(i=0; i
-
extern과 static의 차이.C언어 Tip 2018. 12. 27. 17:14
프로그램은 여러개의 소스파일로 이루어질 수 있다. 예를들어보자 -test1.c- int HELLO;int main(){...} 이런식의 함수가있다고하면 test2.c에서는 extern키워드를 사용하여 test1.c 소스코드에 저장되어있는 전역변수 int HELLO 를 가져와서 쓸 수 있다. 하지만 test1.c의 int HELLO에 int 앞에 static이 붙는다면? 다른 소스코드에서 사용할 수 없다. 오로지 test1.c에서만 사용이 가능하다.