'C' 카테고리의 다른 글
포인터 상수 (0) | 2010.06.24 |
---|---|
문자열 (0) | 2010.06.13 |
버블 정렬 c 0609 (0) | 2010.06.09 |
다중포인터 (0) | 2010.06.08 |
16진수 0xffffffff의 값 (signed and unsigned) (0) | 2010.06.06 |
'VIM 강좌' 카테고리의 다른 글
용어 tabstop shiftwidth (0) | 2010.08.23 |
---|---|
folding (0) | 2010.08.15 |
ctags & cscope (0) | 2010.08.15 |
[File] - New File or Project... Ctrl+N
Projects
Qt4 Gui Application Introduction and project location Name: test Create in: Project Next click! Select required modules Next click! Class Information Class name: MyTest Base class: QWidget Header file: mytest.h Source file: mytest.cpp Generate form: non-checked Form file: Inactive Next click! Project management Finish click! Projects ├test.pro ---------- 프로젝트 정보를 담고 있는 파일. Qt Creator에서 컴파일하려면 반드시 프로젝트를 생성해야 함. ├Headers ----------- 헤더 파일 폴더 │ └mytest.h -------- mytest 클래스의 헤더 파일
└Sources ----------- 소스 파일 폴더 ├main.cpp -------- main() 함수가 구현된 소스 파일
└mytest.cpp ------ mytest 클래스 소스 파일
└
─ │├
'Qt' 카테고리의 다른 글
qt 메뉴 등록 (0) | 2010.09.23 |
---|---|
[Qt Designer] 확장 다이얼로그 (0) | 2010.09.22 |
Qt Designer (0) | 2010.09.18 |
Qt Compile (0) | 2010.06.06 |
버블 정렬
Output: |
#include <stdio.h> int main() { int i, j; int array[3][4] = { {15, 23, 45, 56}, {34, 53, 76, 23}, {98, 29, 48, 43}}; int *p = *array; for (i = 0; i < 12; ++i) { printf("%d ", *(p+i)); } printf("\n"); return 0; } |
배열과 포인터 값과 주소 관계
Output: |
#include <stdio.h> int main() { int i = 100; int *p = &i; int **pp = &p; int ***ppp = &pp; printf(" i = 100; --> i = %d\n", i); *p = 90; printf(" *p = 90; --> i = %d\n", i); **pp = 80; printf(" **pp = 80; --> i = %d\n", i); ***ppp = 70; printf("***ppp = 70; --> i = %d\n", i); return 0; } Result-------------------------------------------------------------------------------------------------------------- i = 100; --> i = 100 *p = 90; --> i = 90 **pp = 80; --> i = 80 ***ppp = 70; --> i = 70 Result-------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
구조체 (0) | 2010.06.12 |
---|---|
버블 정렬 c 0609 (0) | 2010.06.09 |
16진수 0xffffffff의 값 (signed and unsigned) (0) | 2010.06.06 |
형식 지정자 (0) | 2010.06.06 |
상수의 표기 (0) | 2010.06.06 |
#include <iostream> using namespace std; namespace A { void showTest() { cout << "namespace A test" << endl; } } namespace B { void showTest() { cout << "namespace B test" << endl; } } using B::showTest; int main() { A::showTest(); showTest(); return 0; } Result-------------------------------------------------------------------------------------------------------------- namespace A test namespace B test Result-------------------------------------------------------------------------------------------------------------- |
#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.resize(100, 30); hello.show(); return app.exec(); } |
#include <QApplication> #include <QFont> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton quit("Quit"); quit.resize(75, 30); quit.setFont(QFont("Times", 18, QFont::Bold)); QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit())); quit.show(); return app.exec(); } |
#include <QApplication> #include <QFont> #include <QPushButton> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(200, 120); QPushButton quit("Quit", &window); quit.setFont(QFont("Times", 18, QFont::Bold)); quit.setGeometry(10, 40, 180, 40); QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit())); window.show(); return app.exec(); } |
#include <QApplication> #include <QFont> #include <QPushButton> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0); }; MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { setFixedSize(200, 120); QPushButton *quit = new QPushButton("Quit", this); quit->setGeometry(62, 40, 75, 30); quit->setFont(QFont("Times", 18, QFont::Bold)); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); } int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } |
#include <QApplication> #include <QFont> #include <QLCDNumber> #include <QPushButton> #include <QSlider> #include <QVBoxLayout> #include <QWidget> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0); }; MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QPushButton *quit = new QPushButton("Quit"); quit->setFont(QFont("Times", 18, QFont::Bold)); QLCDNumber *lcd = new QLCDNumber(2); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 99); slider->setValue(0); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(quit); layout->addWidget(lcd); layout->addWidget(slider); setLayout(layout); } int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } |
#include <QApplication> #include <QFont> #include <QGridLayout> #include <QLCDNumber> #include <QPushButton> #include <QSlider> #include <QVBoxLayout> #include <QWidget> class LCDRange : public QWidget { public: LCDRange(QWidget *parent = 0); }; LCDRange::LCDRange(QWidget *parent) : QWidget(parent) { QLCDNumber *lcd = new QLCDNumber(2); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 99); slider->setValue(0); connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(lcd); layout->addWidget(slider); setLayout(layout); } class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0); }; MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QPushButton *quit = new QPushButton("Quit"); quit->setFont(QFont("Times", 18, QFont::Bold)); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); QGridLayout *grid = new QGridLayout; for (int row = 0; row < 4; ++row) { for (int column = 0; column < 4; ++column) { grid->addWidget(new LCDRange, row, column); } } QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(quit); layout->addLayout(grid); setLayout(layout); } int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } |
'Qt' 카테고리의 다른 글
qt 메뉴 등록 (0) | 2010.09.23 |
---|---|
[Qt Designer] 확장 다이얼로그 (0) | 2010.09.22 |
Qt Designer (0) | 2010.09.18 |
Qt Creator Manual (0) | 2010.06.10 |
#include <stdio.h> int main() { int inum; inum = 0xffffffff; printf("%8s %8s %10s\n", "hexa", "type", "decimal"); printf("%8x : %8s %10d\n", inum, "signed", inum); printf("%8x : %8s %10u\n", inum, "unsigned", inum); return 0; } |
RESULT------------------------------------------------------------------------------------------------------------- hexa type decimal ffffffff : signed -1 ffffffff : unsigned 4294967295 RESULT------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
버블 정렬 c 0609 (0) | 2010.06.09 |
---|---|
다중포인터 (0) | 2010.06.08 |
형식 지정자 (0) | 2010.06.06 |
상수의 표기 (0) | 2010.06.06 |
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
printf() | scanf() | 형식 |
%c | %c | 단일 문자 |
%s | %s | 문자열 |
%d | %d | 부호있는 정수 |
%i | 부호있는 정수 | |
%i | 10진수, 8진수, 16진수 | |
%f | %f | 실수 (십진 표기) |
%e | %e | 실수 (지수 표기) |
%g | 실수 | |
%u | %u | 부호없는 정수 |
%x | %x | 부호없는 16진수 |
%o | %o | 부호없는 8진수 |
%p | 16진수 메모리 주소 |
printf() | 형식 | |
%ld | long int | |
%hd | short int | |
%lo | long int 8진수 | |
%lx | long int 16진수 | |
%u | unsigned int | |
%lu | unsigned long int | |
%lf | double | |
%Lf | long double |
'C' 카테고리의 다른 글
다중포인터 (0) | 2010.06.08 |
---|---|
16진수 0xffffffff의 값 (signed and unsigned) (0) | 2010.06.06 |
상수의 표기 (0) | 2010.06.06 |
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
#include <stdio.h> int main() { signed int si_num = 43; unsigned int ui_num = 43U; signed long int sli_num = 43L; unsigned long int uli_num = 43UL; float f_num = 43.0F; double d_num = 43.0F; long double ld_num = 43.0L; printf("CONSTANT NOTATION\n\n"); printf("Integer Type\n"); printf("%8s %11s %5s (%3s) : %d\n", "signed", "int", "43", "%d", si_num); printf("%8s %11s %5s (%3s) : %u\n", "unsigned", "int", "43U", "%u", ui_num); printf("%8s %11s %5s (%3s) : %ld\n", "signed", "long int", "43L", "%ld", sli_num); printf("%8s %11s %5s (%3s) : %lu\n", "unsigned", "long int", "43UL", "%lu", uli_num); printf("\n"); printf("Real Number Type\n"); printf("%8s %11s %5s (%3s) : %f\n", "", "float", "43.0F", "%f", f_num); printf("%8s %11s %5s (%3s) : %lf\n", "", "double", "43.0F", "%lf", d_num); printf("%8s %11s %5s (%3s) : %Lf\n", "", "long double", "43.0L", "%Lf", ld_num); return 0; } |
RESULT------------------------------------------------------------------------------------------------------------- CONSTANT NOTATION Integer Type signed int 43 ( %d) : 43 unsigned int 43U ( %u) : 43 signed long int 43L (%ld) : 43 unsigned long int 43UL (%lu) : 43 Real Number Type float 43.0F ( %f) : 43.000000 double 43.0F (%lf) : 43.000000 long double 43.0L (%Lf) : 43.000000 RESULT------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
16진수 0xffffffff의 값 (signed and unsigned) (0) | 2010.06.06 |
---|---|
형식 지정자 (0) | 2010.06.06 |
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
#include <stdio.h> int main() { printf("Integer Type:\n"); printf("%8s %11s : %2d\n", "signed", "char", sizeof(signed char)); printf("%8s %11s : %2d\n", "unsigned", "char", sizeof(unsigned char)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "short int", sizeof(signed short int)); printf("%8s %11s : %2d\n", "unsigned", "short int", sizeof(unsigned short int)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "int", sizeof(signed int)); printf("%8s %11s : %2d\n", "unsigned", "int", sizeof(unsigned int)); printf("\n"); printf("%8s %11s : %2d\n", "signed", "long int", sizeof(signed long)); printf("%8s %11s : %2d\n", "unsigned", "long int", sizeof(unsigned long)); printf("\n"); printf("Real Number Type:\n"); printf("%8s %11s : %2d\n", "", "float", sizeof(float)); printf("%8s %11s : %2d\n", "", "double", sizeof(double)); printf("%8s %11s : %2d\n", "", "long double", sizeof(long double)); return 0; } |
RESULT------------------------------------------------------------------------------------------------------------- |
'C' 카테고리의 다른 글
형식 지정자 (0) | 2010.06.06 |
---|---|
상수의 표기 (0) | 2010.06.06 |
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
'C' 카테고리의 다른 글
상수의 표기 (0) | 2010.06.06 |
---|---|
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
$ ls
a.out test.c
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
#include <stdio.h> int main() { int inum; int *ip; short *sp; inum = 0x0F5A0B43; ip = &inum; printf("%-4s : %10x,\t%3s : %10p\n", "inum", inum, "*ip", ip); sp = (short *)ip; printf("%-4s : %10p,\t%3s : %10x\n", "sp", sp, "*sp", *sp); sp++; printf("%-4s : %10p,\t%3s : %10x\n", "sp", sp, "*sp", *sp); return 0; } |
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
printf() 함수 내부 (0) | 2010.06.04 |
'C' 카테고리의 다른 글
sizeof 연산자를 이용한 Data Type 크기 확인 (0) | 2010.06.06 |
---|---|
Data type 사이의 대입 및 출력 형식 (0) | 2010.06.05 |
cl.exe 옵션 정리 (0) | 2010.06.05 |
GCC 옵션 정리 (0) | 2010.06.05 |
변환문자 (0) | 2010.06.05 |
$ ls
a.out test.c
GCC는 GNU Compiler Collection 의 준 말이지요. 전에는 C Compiler 였으나, C++이나 자바, 포트란 등을 모두 컴파일 할 수 있을 정도로 커져서 컴파일러 콜렉션이라고 바뀌었습니다.
GCC는 컴파일러입니다. 컴파일러의 패스를 보면 쉽게 쉽게 이해 됩니다.
전처리기 -> 컴파일러 -> 어셈블러 -> 링커
이 과정으로 되는 것을 GCC 하나로 모두 진행 시켜서 소스 파일을 실행 파일로 생성 시켜 줍니다.
전처리기는 cpp(C pre processor) 이며, 소스 파일의 주석 제거 및 define을 치환하는 기능 등을 합니다.
그다음은 cc 이며, C Compiler 입니다. 이것은 전처리기를 거친 소스 파일을 어셈 파일로 변환합니다.
그다음은 as 이며, assmeber 입니다. 이것은 에셈파일을 오브젝트 파일로 변환해주십니다.
마지막으로 ld 이며, linker 입니다. 이것은 오브젝트 파일들을 묶어서 실행 파일로 변환해 줍니다.
GCC는 옵션이 아주 많이 있지만, 자주 쓰이는 옵션은 제한 되어 있습니다.
--help : 간단한 옵션을 출력해줍니다.
--version : gcc의 버젼을 출력해 줍니다.
-o : 출력 파일명을 지정할 때 사용합니다.
-c : 링킹 과정을 진행 하지 않고 .o 파일인 오브젝트 파일까지만 생성 하게 됩니다.
-S : 어셈블러까지 진행 하지 않고, 컴파일러까지의 출력은 .S 어셈블러 파일을 생성하게 됩니다.
-O1 ~ -O3 : 최적화 수준을 지정합니다. 숫자가 클수록 높은 수준의 최적화를 하게 됩니다.
-g : 디버깅을 위한 정보를 컴파일 하면서 생성하게 됩니다.
-D : define 을 할수 있는 옵션입니다.
-l (엘) : 라이브러리 이름을 지정합니다.
-L : 추가 라이브러리 디렉토리를 지정합니다.
-W : 모든 에러 메시지 출력
-w : 모든 에러 메시지를 출력 하지 않음
-I(아이) : 추가 헤더 파일이 있는 디렉토리를 지정합니다.
많이 사용되는 옵션을 축약했습니다.
외의 자세한 사항은 매뉴얼 명령어를 참고하시면 됩니다.
터미널을 여신 후 입력창에 'man gcc'를 입력합니다.
'Compile 강좌' 카테고리의 다른 글
라이브러리 (0) | 2010.06.26 |
---|---|
[컴파일 강좌] 2강 - C++ 분할 컴파일 (0) | 2010.06.22 |
[컴파일 강좌] 1강 - C 분할 컴파일 (0) | 2010.06.21 |
'Makefile 강좌' 카테고리의 다른 글
make 활용 강좌 - 2강 (0) | 2010.05.30 |
---|---|
make 활용 강좌 - 1강 (0) | 2010.05.30 |
'Makefile 강좌' 카테고리의 다른 글
make 활용 강좌 - 3강 (0) | 2010.05.30 |
---|---|
make 활용 강좌 - 1강 (0) | 2010.05.30 |
'Makefile 강좌' 카테고리의 다른 글
make 활용 강좌 - 3강 (0) | 2010.05.30 |
---|---|
make 활용 강좌 - 2강 (0) | 2010.05.30 |