VC++�̎g����

VC++�̎g���� > �`���[�g���A�� > �f�o�b�O���� > �f�o�b�K���g���Ă݂悤
���̃y�[�W�̓��e
�f�o�b�K�͖��\�ł͂Ȃ�
�u���[�N�|�C���g��ݒ肵�Ă݂悤
�f�o�b�K���N�����Ă݂悤
�v���ʂ�ɃX�e�b�v���s
�������[�h�ɂ‚���
���肪�����X�|���T�[�l
All About �\�t�g�E�G�A�G���W�j�A
�l�b�g��8�������I�����ԕی��̓A�����J���z�[���E�_�C���N�g
�l���́u�`�����X�v�Ɓu�s���`�v�Ƀ��r�b�g!
�ی������ꐶ�オ��Ȃ��A�ی����ő�50�������̈ꐶ�U�̈�Õی��I

�f�o�b�K�͖��\�ł͂Ȃ�

�w�f�o�b�K�x �ƕ����ƁA�f�o�b�O�����������Ă����c�[���̂悤�Ɏv���Ă��܂���������܂���B�f�o�b�K�� �w�����ƁA�����ɁA����ȃo�O�������[�x �ȂǂƋ����Ă��ꂻ���ł��B�f�o�b�K���N�����ăJ�b�v���[���������ƁA�H�ׂ�鍠�ɂ͑S�Ẵo�O���C������Ă������ł��B

�Ƃ��낪���ۂ͈Ⴂ�܂��B�f�o�b�O����̂͂����܂Ől�Ԃł��B�f�o�b�K�̓f�o�b�O�������グ�邽�߂̃c�[���ł��B�P�s���ƒA�v���P�[�V���������s���Ȃ���A�e�ϐ��̒l�𒲂ׂ��肷�邱�Ƃ͂ł��܂����A�ُ킪���邩�ǂ����𒲂ׂ�̂͐l�Ԃł���Ƃ���ɒ��ӂ��ĉ������B

�u���[�N�|�C���g��ݒ肵�Ă݂悤

�f�o�b�O���ł́A�v���O�������ꎞ���f���āA���̂Ƃ��̏�Ԃ𒲍��������ꍇ������܂��B���̂悤�ȏꍇ�A�u���[�N�|�C���g��ݒ肷��̂������葁�����@�ł��B

�R���\�[���̃f�o�b�O���@�̃y�[�W�Ŏg�p�����\�[�X�Ƀu���[�N�|�C���g��ݒ肵�Ă݂܂��傤�B

#include <stdio.h>

int calc_kaijo( int i)
{
	if( i == 1)
	{
		return 1;
	}
	else
	{
		return i * calc_kaijo(i-1) ;
	}
}

void main()
{
	// 5�̊K����v�Z����
	printf( "result : %d\n", calc_kaijo( 5)) ;
}

calc_kaijo�֐��̒���if( i == 1)�̕����Ƀu���[�N�|�C���g��ݒ肵�Ă݂܂��Bif( i == 1)�̍s�ɃJ�[�\���������Ă����A F9 �L�[���������A�r���h�i�~�j�j�o�[�̎�̃{�^���������ĉ������B�r���h�i�~�j�j�o�[�́A���j���[�̏�ʼnE�N���b�N���ăr���h�i�~�j�j�o�[��I�����ĉ������B���̂悤�ɁA���Ƀu���[�N�|�C���g�̈�̐Ԋۂ��\������܂��B

�u���[�N�|�C���g�̐ݒ�
�u���[�N�|�C���g�̐ݒ�

�u���[�N�|�C���g���폜����ɂ́A�u���[�N�|�C���g�̂���s�ŁA������x F9 ����������̃{�^���������ĉ������B

�f�o�b�K���N�����Ă݂悤

�f�o�b�O����O�ɁA�܂��̓r���h����K�v������܂��B�f�o�b�O����ꍇ�A�ʏ�̓f�o�b�O�łŃr���h���܂��B���j���[�� �w�r���h���A�N�e�B�u�ȍ\���̐ݒ�x �� �wWin32 - Debug�x �ɂȂ��Ă��邩�m�F���ĉ������B�Ȃ��Ă��Ȃ���΁AWin32 - Debug ��I������ OK �������ĉ������B

�A�N�e�B�u�ȍ\����Debug�ɐݒ肷��
�A�N�e�B�u�ȍ\����Debug�ɐݒ肷��

���ɁA���j���[�� �w�r���h->�r���h�x ��I�����邩�AF7�L�[�������ăr���h���ĉ������B�r���h�����܂���������A���������ł��B�f�o�b�K���N�����Ă݂܂��傤�B�r���h�i�~�j�j�o�[�̎�{�^���̍��ɂ�����s�{�^�����������AF5 �L�[�������ĉ������B���j���[�� �w�r���h���f�o�b�O�̊J�n�����s�x �ł�OK�ł��B���̂悤�ȉ�ʂŎ~�܂�Ǝv���܂��B

�f�o�b�K�̉��
�f�o�b�K�̉��

���̉�ʂ��A�f�o�b�K�̉�ʂł��B������ �w�ϐ��E�C���h�E�x�A�E���� �w�E�H�b�`�E�C���h�E�x �ł��B�ϐ��E�C���h�E�ɂ́Ai�̒l��5�ƕ\������Ă��܂��B�f�o�b�K��ʂ͒ʏ�̊J����ʂƂ͈قȂ�̂ŋ�����������܂��񂪁A�A�E�g�v�b�g�E�C���h�E�⃏�[�N�X�y�[�X�E�C���h�E��\������ΊJ����ʂƓ����ɂ��ł��܂��B�f�o�b�K��ʂ͊J����ʂł͕\������Ȃ������‚��̉�ʂ�\���ł��܂��i�ϐ��E�C���h�E�͂��̈�‚ł��j


�ł́A�w�R�[���X�^�b�N�E�C���h�E�x ��\�����Ă݂܂��傤�B�R�[���X�^�b�N�E�C���h�E�ɂ́A�֐��Ăяo���̃X�^�b�N���\������܂��B���j���[�̏�ʼnE�N���b�N���� �R�[���X�^�b�N���`�F�b�N���邩�A���j���[�� �w�\�����f�o�b�O�E�C���h�E���R�[���X�^�b�N�x ��I�����ĉ������B�R�[���X�^�b�N�E�C���h�E�ɂ́A���̂悤�ɕ\������܂��B

calc_kaijo(int 5) line 11 + 12 bytes
main() line 18 + 7 bytes
mainCRTStartup() line 206 + 25 bytes
KERNEL32! 77e67d08()

�R�[���X�^�b�N�E�C���h�E�ł́A���ɂ�����̂���ɂ�����̂��Ăяo���Ă��邱�Ƃ�\���܂��B�‚܂�Amain�֐���calc_kaijo(5)���Ăяo���AmainCRTStartup��main�֐����Ăяo���Ă��܂��B


����ł́A���s�{�^���i�V���[�g�J�b�g��F5�L�[�j�������Ȃ���A�ϐ��E�C���h�E��R�[���X�^�b�N�E�C���h�E���ω����Ă����l�q���ώ@���Ă݂܂��傤�B���s�{�^���́A���̃u���[�N�|�C���g�܂Ŏ��s���Ă���܂��B���̂悤�ɂȂ�܂��B

�ϐ��E�C���h�E�ƃR�[���X�^�b�N�E�C���h�E�̕ω�
�ϐ��E�C���h�E�ƃR�[���X�^�b�N�E�C���h�E�̕ω�

calc_kaijo�֐�����A�����̒l���P���炵��calc_kaijo�֐����Ă΂�Ă���l�q���ώ@�ł���Ǝv���܂��B�����āAi�̒l��1�̂Ƃ��ɁAF5 �������ƁA���ɂ̓u���[�N�|�C���g���Ȃ��̂Ńf�o�b�O�͏I�����܂��B

�v���ʂ�ɃX�e�b�v���s

�X�e�b�v���s�ɂ‚��ĉ������O�� �w���s�x �� �w���X�^�[�g�x �̈Ӗ��𐮗����Ă����܂��傤�B

���s�iF5�j
���̃u���[�N�|�C���g�������܂ŁA�v���O���������s���܂��B�v���O�����I���܂łɃu���[�N�|�C���g�����݂��Ȃ������ꍇ�́A�v���O�������I�����܂��B
���X�^�[�g�iCtrl + Shift + F5�j
�v���O�����̍ŏ�����f�o�b�O���J�n�������܂��B�v���O�����͍ŏ��̃u���[�N�|�C���g�Œ�~���܂��B
�f�o�b�O�̒��~�iShift + F5�j
���ݎ��s���Ă���A�v���P�[�V�������I�����A�f�o�b�O���I�����܂��B
�J�[�\���s�̑O�܂Ŏ��s�iCtrl + F10�j
���݁A�J�[�\��������Ƃ���܂Ŏ��s���܂��B�J�[�\���s�Ɉꎞ�I�ȃu���[�N�|�C���g��ݒ肵�āA�w���s�x ����̂Ɠ����ł��B


����ł́A�X�e�b�v���s�ɂ‚��ĉ�����܂��B�X�e�b�v���s�ɂ́w�X�e�b�v�C���iF11�j�x �w�X�e�b�v�I�[�o�[�iF10�j�x �w�X�e�b�v�A�E�g�iShift + F11�j�x�̂R��ނ�����܂��B���t���������Ă��A���̂��Ƃ���������ƕ�����ɂ����ł���ˁc�B

�X�e�b�v�C���ƃX�e�b�v�I�[�o�[�̓v���O�������̖��߂��P�‚��Ž��s���Ă����܂��B���҂͖��߂̒��Ɋ֐��Ăяo�����܂܂�Ă���Ƃ��ɓ��삪�قȂ�܂��B�X�e�b�v�C���͊֐����Ăяo����Ă���Ƃ��A���̊֐��̓����̖��߂��P�‚��Ž��s���܂��B�X�e�b�v�I�[�o�[�́A�֐��Ăяo�������s�������ƂɁA�Ăяo�������̎��̖��ߒ��O�Œ�~���܂��B

�X�e�b�v�A�E�g�́A���݌Ăяo����Ă���֐���return���Ă΂��܂Ŏ��s���āA�֐��̌Ăяo�����ɖ߂��Ē�~���܂��B


������₷�����邽�߂Ɏ��̂悤�ȃR�[�h��z�肵�Ă݂܂��傤�B

#include <stdio.h>

void b(){
	printf( "b start\n");
	printf( "b end\n");
}

void a(){
	printf( "start a\n");
	b();
	printf( "end a\n");
}


void main()
{
	printf( "start main\n");
	a();
	printf( "end main\n");
}

���̃v���O�����̗���������Ă݂�Ǝ��}�̂悤�ɂȂ�܂��B���ɍs���قǎ��Ԃ��o�߂��Ă���Amain�֐���a�֐����Aa�֐���b�֐����Ă�ł����Ԃ�}�����Ă��܂��B

�T���v���̗���
�T���v���̗���

void a()�̒���b();�̍s�Ƀu���[�N�|�C���g��ݒ肵�āA�f�o�b�O���J�n�����Ƃ��܂��B���̏ꍇ�A���̂悤��b();�̕����Ńv���O�����͎~�܂�܂��B

�u���[�N�|�C���g�Ŏ~�܂������
�u���[�N�|�C���g�Ŏ~�܂������

���F�̖��͎��Ɏ��s�����s��\���܂��B�‚܂�Ab()�͂܂����s����Ă��Ȃ�����ǂ��A���s���ĊJ��������Ɏ��s�����s�ł��B


��̂悤��b();�Œ�~�����Ƃ��ɁA�X�e�b�v�C���A�X�e�b�v�I�[�o�[�A�X�e�b�v�A�E�g�����s�����Ƃ��̒�~�ʒu��}������ƁA���̂悤�ɂȂ�܂��B�i��~�ʒu���킩��₷�����邽�߂ɁA����F�������Ă��܂��j

���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ
���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ

�X�e�b�v�C���i���F�j�̏ꍇ�́Ab()�֐��̓����ɓ���A�P�s�ڂ����s����O�̏ꏊ�Œ�~���Ă��܂��B�X�e�b�v�I�[�o�[�i�ԐF�j�̏ꍇ�́Ab()�֐������s����a()�֐��ɖ߂��Ă����Ƃ���Œ�~���Ă��܂��B�ԐF���printf("a end\n");�������Ă���̂ŁA���s�����Ƃ��ɍŏ��ɂ��̍s�����s����܂��B�X�e�b�v�A�E�g�i�F�j�̏ꍇ�́Aa()�֐����I������܂Ŏ��s���āA�Ăяo������main�֐��ɖ߂��Ē�~���Ă��܂��B

�������A�Ăяo���֐��̒��Ƀu���[�N�|�C���g���������ꍇ�A�X�e�b�v�C���A�X�e�b�v�I�[�o�[�A�X�e�b�v�A�E�g�Ƃ��ɁA�u���[�N�|�C���g�Œ�~���܂��B

���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ
���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ


�ł́A���ꂼ����ǂ̂悤�Ɏg��������΂悢�ł��傤�B

��{�I�ɂ̓X�e�b�v�C�������Ŏ������ł��傤�B�������A�Ăяo���֐��̒��ɖ��炩�Ƀo�O���Ȃ��ꍇ��Aprintf�Ȃǂ̃��C�u�����֐����Ăяo���Ă���ӏ��ł̓X�e�b�v�I�[�o�[���g���Ɨǂ��ł��傤�B�܂��A���݃X�e�b�v���s���̊֐��̒��ɂ͖��炩�ɖ�肪�Ȃ��ꍇ�́A�X�e�b�v�A�E�g�����s���ČĂяo������ɖ߂�ƁA�X�e�b�v�C����A�ł��Ċ֐��𔲂����Ԃ��Ȃ��܂��B

�������[�h�ɂ‚���

printf�֐��Ȃǂ̃����^�C�����C�u�����Ɋ܂܂��֐��ɃX�e�b�v�C�����悤�Ƃ���ƁAprintf�̃\�[�X�̏ꏊ��q�˂Ă������ƁA���̂悤�ȉ�ʂɂȂ��Ă��܂��܂��B

�t�A�Z���u���ŃX�e�b�v���s
�t�A�Z���u���ŃX�e�b�v���s

��̉�ʂ� �w�������[�h�x �Ƃ����A�t�A�Z���u�������A�Z���u�������o�C�g�R�[�h���ߒP�ʂŃu���[�N�|�C���g��ݒ肷�邱�Ƃ��ł��A�œK�����ꂽ�R�[�h�̃f�o�b�O�Ȃǂɕ֗��ł��B�����printf�֐��̃o�C�i�����t�A�Z���u���������̂ɂȂ��Ă��܂��܂����B����́Aprintf�֐��̃\�[�X�R�[�h�����‚���Ȃ��������߁A�������[�h�ŊJ����������Ȃ��Ȃ�������ł��B���̂悤�ɂȂ����ꍇ�́A�X�e�b�v�A�E�g������A���̃E�C���h�E��‚��Ă���Ăяo�����̃\�[�X�����Ă��������B���F�̖�󂪂����ƕ\������Ă���͂��ł��B

�܂��Amain�֐���WinMain�֐�����return�Ŗ߂����ꍇ�ɂ��A���̂悤�ȏ�ԂɂȂ��Ă��܂��܂��B����́Amain�֐���WinMain�֐����Ă�ł���mainCRTStartup��WinMainCRTStartup�֐��������^�C�����C�u�����ɋL�q����Ă��邽�߂ł��B


���̂悤�ȏ�Ԃ������ɂ́A�����^�C�����C�u�����̊֐��ɂ̓X�e�b�v�C�������ɃX�e�b�v�I�[�o�[����悤�ɐS������Ƃ悢�ł��傤�B�Ƃ͂����A�X�e�b�v�C�����Ă��܂��č������邱�Ƃ�����ł��傤�B���̂��߂ɁA�����^�C�����C�u�����̃\�[�X�R�[�h���C���X�g�[������̂͂ǂ��ł��傤���B��������΁A�������[�h�ɂ͂Ȃ炸�Ƀ\�[�X�R�[�h�ɃX�e�b�v�C���ł��܂��B�����^�C�����C�u�����̃\�[�X�́A���̂悤�ȕ��@�ŃC���X�g�[���ł��܂��B

  1. �R���g���[���p�l���� �A�v���P�[�V�����̒lj��ƍ폜���J���B
  2. VC++6.0 ��I���B
  3. Visual C++�Z�b�g�A�b�v���\�����ꂽ��A�w�lj�/�폜�x �{�^���������B
  4. �wVC++ �����^�C�� ���C�u�����x ��I������ �w�I�v�V�����̕ύX�x �{�^���������B
  5. �wCRT�\�[�X�R�[�h�x ���`�F�b�N����B
  6. �wOK�x�{�^���A�w�p���x�{�^���̏��ɉ����B