draemonash2のメモ書き
【for】
【ifndef】#ifdef 条件式 ~ #else ~ #endif
volatile struct {
tBypassHeader Header;
volatile uint8 OutputTable1[CDC_MAXPTRB01];
volatile uint8 OutputTable2[CDC_MAXPTRB01];
}cdcBypassB01;
typedef struct {
tBypassHeader Header;
volatile uint8 OutputTable1[CDC_MAXPTRB01];
volatile uint8 OutputTable2[CDC_MAXPTRB01];
}tcdcBypassB01;
tcdcBypassB01 cdcBypassB01;
#define VAL 0 /* VAL を 0 に置き換える */
typedef 0 VAL; /* 0 を VAL として認識させる */
typedef int arrInt[5] /* int を arrInt[5] として再定義する */
arrInt a;
a[0] = 1;
#include <stdio.h>
#define char_ptr char *
typedef char * char_ptr2;
int main(void)
{
char_ptr1 a1, a2, a3;
char_ptr2 b1, b2, b3;
printf("%d\n", sizeof(a1)); /* ⇒ 4 */
printf("%d\n", sizeof(a2)); /* ⇒ 1 */
printf("%d\n", sizeof(a3)); /* ⇒ 1 */
printf("%d\n", sizeof(b1)); /* ⇒ 4 */
printf("%d\n", sizeof(b2)); /* ⇒ 4 */
printf("%d\n", sizeof(b3)); /* ⇒ 4 */
return 0;
}
#include <stdio.h>
#define FUNC_EXE_DOINCREMENT ((int)0x01 << 0)
#define FUNC_EXE_DODECREMENT ((int)0x01 << 1)
#define FUNC_EXE_DODOUBLE ((int)0x01 << 2)
#define FUNC_EXE_DOTRIPLE ((int)0x01 << 3)
#define FUNC_NUM_MAX ((int) 4)
void behavior(int intFuncFlag, int intInputVal, int *intOutputVal);
int doIncrement(int arg01);
int doDecrement(int arg01);
int doDouble(int arg01);
int doTriple(int arg01);
void debugPrint(int arg01);
int (*fp[FUNC_NUM_MAX])(int) = {
doIncrement,
doDecrement,
doDouble,
doTriple
};
int main(void)
{
int intInputVal = 10;
int intOutputVal = 0;
behavior(
( FUNC_EXE_DOINCREMENT | FUNC_EXE_DODECREMENT | FUNC_EXE_DODOUBLE | FUNC_EXE_DOTRIPLE),
intInputVal,
&intOutputVal
);
printf("OutputVal is %d !", intOutputVal);
return (0);
}
void behavior(
int intFuncFlag,
int intInputVal,
int *intOutputVal
)
{
int intLoopCnt = 0;
int intBitMsk = 0x01;
debugPrint(intFuncFlag);
for (intLoopCnt = 0; intLoopCnt < FUNC_NUM_MAX; intLoopCnt++) {
if ((intFuncFlag & intBitMsk) == 1) {
*intOutputVal += fp[intLoopCnt](intInputVal);
}
intFuncFlag = intFuncFlag >> 1;
}
return;
}
int doIncrement(int arg01) { return (arg01 + 1); }
int doDecrement(int arg01) { return (arg01 - 1); }
int doDouble(int arg01) { return (arg01 * 2); }
int doTriple(int arg01) { return (arg01 * 3); }
void debugPrint(int arg01)
{
printf("debug print \"%d\"\n", arg01);
return;
}
int main()
{
unsigned short ui_x = 65535;
unsigned short ui_y = 65534;
printf(" ui_x = %d(0x%04x)\n", ui_x, ui_x);
printf(" ui_y = %d(0x%04x)\n", ui_y, ui_y);
printf("(signed short)ui_x = %d(0x%04x)\n", (signed short)ui_x, (signed short)ui_x);
printf("(signed short)ui_x = %d(0x%04x)\n", (signed short)ui_y, (signed short)ui_y);
}
ui_x = 65535(0xffff)
ui_y = 65534(0xfffe)
(signed short)ui_x = -1(0xffffffff)
(signed short)ui_x = -2(0xfffffffe)