기본 콘텐츠로 건너뛰기

C++ - C++ 함수 만들기 (고려사항)

C++ 함수 만들기 (고려사항)

  1. Return 값을 표기
  2. 인자 값의 정확한 타입을 표기
  3. 인자 값과 내부 변수를 구별
  4. 해당 인자 값을 어떻게 활용하는지 표기
  5. 포인터(*) 제거


  1. int GetStringSize(); => int nGetStringSize()
=> 함수 호출시에 리턴값을 알 수 있음.
=> n: int, sz: String, p: Point, L: Long
  1. int nGetStringSize(TCHAR* szName, int nNameSize)
=> 함수의 인자값이 어떤 형태인지 알 수 있다.
  1. int nGetStringSize(TCHAR* _szName, int _nNameSize)
=> “_”를 이용하여 이 변수는 함수 인자값으로 받아온 변수라는 것을 알 수 있다.
  1. int nGetStringSize(TCHAR* szName, int nNameSize)
함수에 Name을 복사하여 Buffer에 담는 함수라고 하고 인자를 추가하면
int nGetStringSize(TCHAR* szName, int nNameSize, TCHAR* _szBuffer)
int nGetStringSize(TCHAR* szName, int nNameSize, TCHAR* _szOutPutBuffer);
두번째가 가독성이 좋음.
이것을 좀더 수정하면
int nGetStringSize(__in TCHAR* szName, __in int nNameSize, __out TCHAR*   _szOutPutBuffer);
__in, __out, __inout 은 표기만을 위한 매크로
int nGetStringSize(__in TCHAR* szName, __in int nNameSize, __out TCHAR*   _szOutPutBuffer, __inout INT& _nOutPutBufferSize);
_nOutPutBufferSize는 _szOutPutBuffer의 사이즈를 넣어주는 변수. 그리고 내부에서 _szOutPutBuffer에 담긴 길이를 리턴할 수 있는 것.

  1. INT* = PINT, CHAR* = PSTR, LPSTR, TCHAR* = LPTSTR, VOID* = PVOID 등으로 *이 안보이도록 함.

댓글

이 블로그의 인기 게시물

C# - Serial Port ASCII/HEX Format

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace SerialTest1 {     public partial class Form1 : Form     {         delegate void MyDelegate();      //델리게이트 선언(크로스 쓰레드 해결하기 위한 용도)         bool SendForamt = true;          // true : ASCII   false : HEX         bool ReceiveFormat = true;       // true : ASCII   false : HEX         public Form1()         {             InitializeComponent();          ...

C# - Windows Form 에 있는 control 찾기

// 아래 코드는 form 의 최상위 control만 찾을 수 있음. // panle, groubbox ... 내부에 있는 control은 찾지 못함. Control GetControlByName(string Name) {     foreach (Control c in this.Controls)         if (c.Name == Name)             return c;     return null; } // form 의 모든 control을 찾을 수 있음. string name = "btnBit" + (i + 1).ToString("D2"); var tmpBtn = this.Controls.Find(name, true).FirstOrDefault(); if (tmpBtn != null) {     if (value == 1) tmpBtn.BackColor = Color.Lime;     else tmpBtn.BackColor = Color.Gray; }

C# - ARGB 색상

속성 A 이  Color  구조체의 알파 구성 요소 값을 가져옵니다. Alice Blue ARGB 값이  #FFF0F8FF 인 시스템 정의 색을 가져옵니다. Antique White ARGB 값이  #FFFAEBD7 인 시스템 정의 색을 가져옵니다. Aqua ARGB 값이  #FF00FFFF 인 시스템 정의 색을 가져옵니다. Aquamarine ARGB 값이  #FF7FFFD4 인 시스템 정의 색을 가져옵니다. Azure ARGB 값이  #FFF0FFFF 인 시스템 정의 색을 가져옵니다. B 이  Color  구조체의 파랑 구성 요소 값을 가져옵니다. Beige ARGB 값이  #FFF5F5DC 인 시스템 정의 색을 가져옵니다. Bisque ARGB 값이  #FFFFE4C4 인 시스템 정의 색을 가져옵니다. Black ARGB 값이  #FF000000 인 시스템 정의 색을 가져옵니다. Blanched Almond ARGB 값이  #FFFFEBCD 인 시스템 정의 색을 가져옵니다. Blue ARGB 값이  #FF0000FF 인 시스템 정의 색을 가져옵니다. Blue Violet ARGB 값이  #FF8A2BE2 인 시스템 정의 색을 가져옵니다. Brown ARGB 값이  #FFA52A2A 인 시스템 정의 색을 가져옵니다. Burly Wood ARGB 값이  #FFDEB887 인 시스템 정의 색을 가져옵니다. Cadet Blue ARGB 값이  #FF5F9EA0 인 시스템 정의 색을 가져옵니다. Chartreuse ARGB 값이  #FF7FFF00 인 시스템 정의 색을 가져옵니다. Chocolate ARGB 값이  #FFD2691E 인 시스템 정의 색을 가져옵니다. Coral ARGB ...