CSS는 HTML의 꾸밈을 담당하면서 html의 가독성을 향상시키는 효과를 가져올 수 있다.


html의 head에 css 파일을 link해주고, style은 css에 포함시키는 편이 코드가 깔끔하고 보기 좋다.

html의 각 tag 별로 속성을 부여 할 수 있고, class나 id를 만들어서 속성을 부여할 수 있다.


아래와 같은 문법으로 tag/class/id 별로 속성을 부여한다.

해당 속성이 적용 불가한 경우 무시된다.

body{

/* declaration of property */

}

.my_class{

/* declaration of property */

}

#my_id{

/* declaration of property */

}


자주 적용될 만한 property 몇 개를 아래에 정리해 보았다.

background-color: color_name | #hex_value | rgb(r,g,b);

height | width: valuepx | valuecm | value% ;

margin: auto | valuepx;

padding: valuepx;

text-align: center | left | right | justify;

color: color_name | #hex_value | rgb(r,g,b);

font-family: font_name;

font-style: normal | italic | oblique;

font-size: valuepx | valuecm | value% ;

font-weight: normal | bold | border | value;

font-variant: normal | small-caps;


자세한 사항은 https://www.w3schools.com/css/default.asp 에서 확인 할 수 있음

아이콘은 https://material.io/icons/ 참조

'Programming > CSS' 카테고리의 다른 글

CSS 구글 폰트 추가하기  (0) 2017.12.15

CSS에 글꼴을 새로 다운 받지 않고도, 구글 폰트를 이용해 웹상의 폰트를 적용시킬 수 있다.


폰트 찾기는 https://fonts.google.com 에서!

한글 폰트의 경우는 https://fonts.google.com/earlyaccess 에서 Korean 검색!


html 파일에서 link 하는 ccs 파일에 아래와 같이 글꼴을 import 하여 사용하면 된다.

@import url('https://fonts.googleapis.com/css?family=Roboto+Condensed');


font-family: 'Roboto Condensed', sans-serif;

사용법을 잘 모르겠는 경우 구글 폰트에서 선택하면 사용법 예시까지 알려준다.


'Programming > CSS' 카테고리의 다른 글

CSS 간단 메뉴얼  (0) 2017.12.15

C언어에서 stdarg.h 헤더를 사용하면 함수 선언 시 가변 인자(Variable arguments)를 가질 수 있다.


stdarg.h 헤더파일은 자료형으로 va_list를 가지며, 함수로 va_start, va_arg, va_end 등의 함수를 포함하고 있다.


아래의 예를 살펴보면 이해 할 수 있을 것이다.

#include<stdio.h>

#include<stdarg.h>


void vaPrintf(const char* sentence, ...){

int i;

va_list values;

va_start(values, sentence);

unsigned long long int iInt64;

double* iDouble_p;


for(i=0;;i++){

if(sentence[i] == 0) break;

else if(sentence[i] == '%'){

i++;

switch(sentence[i]){

case 'd' : printf("%d", va_arg(values, int));

break;

case 'c' : printf("%c", va_arg(values, unsigned int));

break;

case 'f' : printf("%f", (float)va_arg(values, double));

break;

case 's' : printf("%s", va_arg(values, char*));

break;

case 'x' : printf("%x", va_arg(values, unsigned int));

break;

case 'l' : if(sentence[i+1] == 'd'){

printf('%ld", va_arg(values, unsigned long long int));

}

else if(sentence[i+1] == 'f'){

printf("lf", va_arg(values, double));

}

else{

printf("ERROR: invalid format\n");

}

break;

defaut : printf("ERROR: invalid format\n");

break;

}

}

else{

printf("%c", sentence[i]);

}

}

}


void main(){

vaPrintf("vaPrintf test\n");

vaPrintf("int 1 = %d\n", (int)1);

vaPrintf("float 1.5 = %f\n", (float)1.5);

vaPrintf("double 1.5 = %lf\n", (double)1.5);

}

주의 해야할 점은 va로 float 을 넘기게 되면 넘어갈 때 double 형태로 넘어가게 된다고한다.(short, char 등도 int로 넘어간다.)

따라서 va_arg(va_list _list, type _t) 에서 type은 float 이 될 수 없다.

다만, function_call 시 float 을 인자로 넘긴다면, 이와같이 va_arg(_list, double) double 로 지정하더라도 할당 받는 변수의 형태에 맞춰 자동으로 float 으로 변환이 된다.(할당 받는 변수가 float 이면 float으로 자동으로 캐스팅/ double 이면 double로)

이와 같은 이유로, printf 함수에서도 double 자료형을 출력할 떄, %f / %lf 아무거나 써도 똑같이 double 형 캐스팅된 값을 출력하게 된다.


추가적으로 ARMCC 의 경우, 가변인자로 double/unsigned long long int 등 32bit 을 넘어가는 데이터가 제대로 넘어가지 않는 오류를 발견했다.

넘기기 전에 32비트씩 나누어 넘기고, 받아서 다시 data type을 바꿔주는 것이 좋을 듯 하다.





'Programming > C Language' 카테고리의 다른 글

C progress printing  (0) 2018.08.07
static  (0) 2018.07.13
extern  (0) 2017.06.21
static  (0) 2017.06.20
Floating Point Bit 출력 방법  (0) 2017.06.08

+ Recent posts