Re: [問題] struct alignment
看板C_and_CPP (C/C++)作者descent (「雄辯是銀,沉默是金」)時間5年前 (2019/12/13 16:45)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/4 (看更多)
用 cfront 來測試。
t.h
#ifndef t_h
#define t_h
#include <stdio.h>
class Base
{
public:
Base()
{
printf("Base ctor\n");
num_ = 5;
}
~Base()
{
printf("Base dtor\n");
}
int get_num();
private:
int num_;
};
class D1 : public Base
{
public:
D1()
{
printf("D1 ctor\n");
a_ = 12;
}
~D1()
{
printf("D1 dtor\n");
}
private:
int a_;
};
class D2 : public Base
{
public:
D2()
{
printf("D2 ctor\n");
b_ = 78;
}
~D2()
{
printf("D2 dtor\n");
}
private:
int b_;
};
#endif
t.C
#include "t.h"
int Base::get_num()
{
return num_;
}
m.C
#include "t.h"
int main(int argc, char *argv[])
{
D1 d1;
D2 d2;
printf("d1.num: %d\n", d1.get_num());
printf("d2.num: %d\n", d1.get_num());
return 0;
}
編譯指令
main_fn=t
cpp-5 -Iincl-master/incl-linux32/ $main_fn.C > $main_fn.i # 處理 header files
./cfront +a1 +L +f$main_fn.C < $main_fn.i > $main_fn..c # 將 cpp 檔 (.C) 轉成
.c 檔
main_fn=m
cpp-5 -Iincl-master/incl-linux32/ $main_fn.C > $main_fn.i # 處理 header files
./cfront +a1 +L +f$main_fn.C < $main_fn.i > $main_fn..c
gcc-5 m..c t..c m.cdts..c ./libC.a -o m2
執行結果
./m2
Base ctor
D1 ctor
Base ctor
D2 ctor
d1.num: 5
d2.num: 5
D2 dtor
Base dtor
D1 dtor
Base dtor
好奇測試了一下, 不算太難, 連 ctor/dtor 都送給你了。
只是轉出的 ..c code 超級難看就是, 但用 macro 自己來, 應該也不會簡單到哪裡。
應付最基本的繼承語法應該是綽綽有餘。
用 c89 應該也是沒問題。
※ 引述《DJWS (...)》之銘言:
: // C99
: struct SuperClass {
: int num;
: };
: struct ClassA {
: int num;
: int a;
: };
: struct ClassB {
: int num;
: int b;
: };
: struct ClassA objA = {
: .num = 0,
: .a = 0
: };
: struct ClassB objB = {
: .num = 0,
: .b = 0
: };
: void func(void* obj)
: {
: struct SuperClass* object = obj;
: object->num++;
: }
: int main(void) {
: func(&objA);
: func(&objB);
: return 0;
: }
: 我想做類似的事情,請問在C99要怎麼寫?
: 不能使用malloc
--
紙上得來終覺淺,絕知此事要躬行。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.53.138 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1576226744.A.6FE.html
※ 編輯: descent (61.218.53.138 臺灣), 12/13/2019 16:56:36
推
12/13 18:11,
5年前
, 1F
12/13 18:11, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章