0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C/C++項(xiàng)目實(shí)戰(zhàn):2D射擊游戲開(kāi)發(fā)(簡(jiǎn)易版)

C語(yǔ)言編程學(xué)習(xí)基地 ? 來(lái)源:C語(yǔ)言編程學(xué)習(xí)基地 ? 2023-01-12 15:57 ? 次閱讀

每天一個(gè)C語(yǔ)言小項(xiàng)目,提升你的編程能力!

【第一版】

花了一天時(shí)間,用 easyx 做了一個(gè)小游戲,程序中所有的類(lèi)函數(shù)都是內(nèi)聯(lián)函數(shù),大約 300 行。

【第二版】

主要做了代碼優(yōu)化,加強(qiáng)可讀性。

同時(shí)改了操作方式,玩家和敵人都可以在 x、y 方向上移動(dòng),敵人每隔一段時(shí)間會(huì)隨機(jī)換向。

游戲運(yùn)行截圖如下:

49f10e52-924c-11ed-bfe3-dac502259ad0.png

操作方式

玩家通過(guò)方向鍵移動(dòng),z鍵射擊,左 Shift 進(jìn)入低速移動(dòng)模式提高操作精度。

代碼說(shuō)明

關(guān)于無(wú)阻塞延時(shí),首先,先要 ctime創(chuàng)建一個(gè) clock_t 變量 a,初始化為 clock(),貌似是自從 1970 年到現(xiàn)在的毫秒數(shù)。

我們要每隔 0.5 秒執(zhí)行函數(shù) func() 一次。

那么創(chuàng)建主循環(huán) while(1),調(diào)用前用 clock() - a;如果 clock() - a > 500,那么執(zhí)行 func(),并把 a 重新賦值為 clock()。

如果使用 Sleep(500) 的話,這個(gè)循環(huán)就只能執(zhí)行 func 函數(shù)了,在此期間什么也做不了。

代碼展示:

(直接上源碼,大家可以看注釋?zhuān)?/p>

/* 作者:STF(QQ:2292683261)*/
#include 
#include 
#include 




void hp_bar();
void show_player();
void show_enemy();
void move_enemy();
void draw_background();
int generate_line();          // 若返回 -1,表示生成線條失敗


int create_p_b();            // 創(chuàng)建自機(jī)的子彈
int create_e_b();            // 創(chuàng)建敵機(jī)的子彈


int destroy_p_b(int index);
int destroy_e_b(int index);        // 刪除一個(gè)子彈


#define FRAMERATE 20          // 畫(huà)面刷新的周期(ms)
#define FIRERATE 350          // 射擊間隔時(shí)間
#define E_FIRERATE 350          // 敵人射擊間隔
#define BLEED_TIME 150          // 受傷閃爍時(shí)間


#define BACKGROUND 80          // 繪制背景線條的周期


#define MAX_LINES 75          // 最多同屏背景線條數(shù)目
#define MAX_PLAYER_BULLETS 40      // 最多同屏自機(jī)子彈數(shù)目
#define MAX_ENEMY_BULLETS 40      // 最多同屏敵機(jī)子彈數(shù)目




int player_pos[2] = { 30,30 };            // 自機(jī)位置xy
int enemy_bullet[MAX_ENEMY_BULLETS][2];        // 敵人的子彈位置
int player_bullet[MAX_PLAYER_BULLETS][2];      // 自機(jī)的子彈位置
int enemy_pos[2] = { 580,240 };            // 敵機(jī)位置
bool p_b_slots[MAX_PLAYER_BULLETS] = { false };    // 用于判斷 player_bullet 的某個(gè)位置是否可用
bool e_b_slots[MAX_ENEMY_BULLETS] = { false };
int number_p_b = 0, number_e_b = 0;          // 記錄自機(jī)和敵機(jī)的子彈數(shù),減少遍歷壓力


int player_health = 100, enemy_health = 100;


bool isBleeding_p = false, isBleeding_e = false;  // 用于實(shí)現(xiàn)命中后的閃爍效果




int background_line[MAX_LINES][3];          // 背景的線條,三個(gè)參數(shù)分別是 x、y、長(zhǎng)度
bool line_slots[MAX_LINES] = { false };
int number_lines = 0;                // 記錄背景線條數(shù)目




clock_t begin_time = 0;


int main()
{
  initgraph(640, 550, 4);


  srand((unsigned)time(NULL));


  settextcolor(RGB(0, 254, 0));
  settextstyle(30, 0, L"微軟雅黑");
  outtextxy(50, 200, L"方向鍵移動(dòng), Z 攻擊, 左 Shift 切換低速模式");


  bool win = false, dead = false;


  clock_t firerate = clock();            // 射擊控制
  clock_t e_firerate = clock();          // 控制敵機(jī)的射擊
  clock_t runtime = clock();            // 用于控制畫(huà)面刷新頻率
  clock_t bleed_p = clock(), bleed_e = clock();  // 用于實(shí)現(xiàn)受傷閃爍
  clock_t backgroundline_generate = clock();    // 用于生成背景線條
  Sleep(3000);
  BeginBatchDraw();


  bool leftshift = false;


  begin_time = clock();
  while (true)
  {


    if (clock() - runtime >= FRAMERATE)
    {
      runtime = clock();
      cleardevice();
      draw_background();
      hp_bar();// 畫(huà)血條
      show_player();
      show_enemy();


      int n_p_b = 1, n_e_b = 1;          // 計(jì)數(shù),遍歷子彈,刷新位置
      int p_b_toprocess = number_p_b, e_b_toprocess = number_e_b;  // 需要處理的子彈數(shù)
      for (int i = 0; i < MAX_PLAYER_BULLETS && (n_p_b <= p_b_toprocess || n_e_b <= e_b_toprocess); ++i)
      {
        if (n_p_b <= p_b_toprocess)        // 如果子彈已經(jīng)處理完就不處理了
        {
          if (p_b_slots[i] == true)
          {
            ++n_p_b;
            player_bullet[i][0] += 3;
            setfillcolor(RGB(150, 180, 210));
            if (player_bullet[i][0] >= 635)
            {
              destroy_p_b(i);  // 到達(dá)了屏幕最右端
            }


            // 碰撞檢測(cè),兩個(gè)矩形
            if ((player_bullet[i][0] + 5 >= enemy_pos[0] - 20 && player_bullet[i][0] - 5 <= enemy_pos[0] + 20) && (player_bullet[i][1] - 5 < enemy_pos[1] + 40 && player_bullet[i][1] + 5 > enemy_pos[1] - 40))
              // 擊中敵人
            {
              destroy_p_b(i);
              enemy_health -= 8;
              isBleeding_e = true;
              bleed_e = clock();
            }


            fillrectangle(player_bullet[i][0] - 5, player_bullet[i][1] - 5, player_bullet[i][0] + 5, player_bullet[i][1] + 5);    // 畫(huà)子彈
          }


        }


        if (n_e_b <= e_b_toprocess)        // 敵人的子彈
        {
          if (e_b_slots[i] == true)
          {
            ++n_e_b;
            enemy_bullet[i][0] -= 3;
            setfillcolor(RGB(255, 180, 20));
            if (enemy_bullet[i][0] < 5)
            {
              destroy_e_b(i);
            }


            // 碰撞檢測(cè),兩個(gè)矩形
            if (enemy_bullet[i][0] - 5 < player_pos[0] + 25 && enemy_bullet[i][0] + 5 > player_pos[0] - 25 && enemy_bullet[i][1] - 5 < player_pos[1] + 25 && enemy_bullet[i][1] + 5 > player_pos[1] - 25)
            {
              // 擊中自機(jī)
              isBleeding_p = true;
              destroy_e_b(i);
              player_health -= 8;
              bleed_p = clock();
            }
            fillrectangle(enemy_bullet[i][0] - 5, enemy_bullet[i][1] - 5, enemy_bullet[i][0] + 5, enemy_bullet[i][1] + 5);
          }


        }
      }


      if (win || dead)
        break;
      FlushBatchDraw();


      move_enemy();


      if (player_health <= 0)
        dead = true;
      if (enemy_health <= 0)
      {
        win = true;
      }


      if (GetAsyncKeyState(VK_LSHIFT) & 0x8000)  // 按住 Shift 減速
      {
        leftshift = true;
      }
      else
      {
        leftshift = false;
      }


      if (GetAsyncKeyState(VK_UP) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[1] >= 28)
          if (leftshift)
            player_pos[1] -= 2;        // y 的正方向是向下的
          else
            player_pos[1] -= 5;
      }
      if (clock() - firerate >= FIRERATE && GetAsyncKeyState('Z') & 0x8000)
        // 玩家開(kāi)火
      {
        firerate = clock();
        create_p_b();
      }
      if (GetAsyncKeyState(VK_DOWN) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[1] <= 452)
          if (leftshift)
            player_pos[1] += 2;
          else
            player_pos[1] += 5;
      }
      if (GetAsyncKeyState(VK_LEFT) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[0] >= 30)
          if (leftshift)
            player_pos[0] -= 2;
          else
            player_pos[0] -= 5;
      }
      if (GetAsyncKeyState(VK_RIGHT) & 0x8000)
        // 玩家移動(dòng)
      {
        if (player_pos[0] <= 320)
          if (leftshift)
            player_pos[0] += 2;
          else
            player_pos[0] += 5;
      }




      if (clock() - e_firerate >= E_FIRERATE)
      {
        e_firerate = clock();
        create_e_b();
      }




      if (clock() - bleed_p >= BLEED_TIME)    // 受傷時(shí)間結(jié)束后關(guān)閉受傷閃爍效果
      {
        isBleeding_p = false;
      }


      if (clock() - bleed_e >= BLEED_TIME)    // 受傷時(shí)間結(jié)束后關(guān)閉受傷閃爍效果
      {
        isBleeding_e = false;
      }


      if (clock() - backgroundline_generate >= BACKGROUND)
      {
        backgroundline_generate = clock();
        generate_line();
      }
    }
  }
  if (win)
  {
    settextcolor(RGB(0, 254, 0));
    settextstyle(35, 0, L"黑體");
    outtextxy(150, 200, L"你打敗了boss!你贏了??!");
  }
  else
  {
    settextcolor(RGB(254, 0, 0));
    settextstyle(35, 0, L"黑體");
    outtextxy(140, 200, L"你被boss打敗了!");
  }
  FlushBatchDraw();
  Sleep(5000);
  EndBatchDraw();
  return 0;
}












void hp_bar()
{
  setlinecolor(RGB(255, 255, 255));
  line(0, 481, 640, 481);                    // 一條分割線
  settextstyle(20, 0, L"黑體");
  outtextxy(10, 485, L"BOSS的生命值:");
  outtextxy(10, 520, L"玩家的生命值:");
  setfillcolor(RGB(0, 255, 1));
  setlinecolor(WHITE);
  rectangle(160, 515, 560, 540);                // 血條外框
  setfillcolor(RGB(0, 255, 1));
  setlinecolor(RGB(255, 255, 255));
  if (player_health > 0)
    fillrectangle(160, 515, 160 + player_health * 4, 540);  // 玩家血條
  setlinecolor(WHITE);
  rectangle(160, 485, 560, 510);                // 敵人血條外框
  setfillcolor(RGB(230, 0, 1));
  setlinecolor(RGB(255, 255, 255));
  if (enemy_health > 0)
    fillrectangle(160, 485, 160 + enemy_health * 4, 510);  // 敵人血條


}


void show_player()
{
  if (isBleeding_p)
    setfillcolor(RGB(255, 0, 0));
  else
    setfillcolor(RGB(150, 180, 210));
  fillrectangle(player_pos[0] - 25, player_pos[1] - 25, player_pos[0] + 25, player_pos[1] + 25);
  setfillcolor(RGB(100, 200, 180));
  fillrectangle(player_pos[0], player_pos[1] + 5, player_pos[0] + 40, player_pos[1] - 5);
}


void show_enemy()
{
  if (isBleeding_e)
    setfillcolor(RGB(255, 0, 0));
  else
    setfillcolor(RGB(0, 130, 125));
  fillrectangle(enemy_pos[0] - 20, enemy_pos[1] - 40, enemy_pos[0] + 20, enemy_pos[1] + 40);
  setfillcolor(RGB(100, 200, 180));
  fillrectangle(enemy_pos[0], enemy_pos[1] + 5, enemy_pos[0] - 40, enemy_pos[1] - 5);
}


void move_enemy()
{
  static bool angle_v;    // 控制敵機(jī)的豎直移動(dòng)方向,true 為向上,到邊緣就換向
  static bool angle_h;    // 控制敵機(jī)的水平移動(dòng)方向,true 為向左,到邊緣就換向
  static clock_t interval;  // 定時(shí)隨機(jī)換向


  if (clock() - interval >= 2000)
  {
    interval = clock();
    if (rand() % 2)      // 一般的概率換向
      angle_v = !angle_v;
    if (rand() % 2)
      angle_h = !angle_h;
  }


  if (angle_v == true)    // 到了地圖邊緣就調(diào)頭
    enemy_pos[1] -= 3;
  else
    enemy_pos[1] += 3;
  if (angle_h == true)
    enemy_pos[0] -= 3;
  else
    enemy_pos[0] += 3;




  if (enemy_pos[1] >= 440)
    angle_v = true;
  else if (enemy_pos[1] <= 40)
    angle_v = false;




  if (enemy_pos[0] >= 580)
    angle_h = true;
  else if (enemy_pos[0] <= 380)
    angle_h = false;


}


void draw_background()
{
  setlinecolor(WHITE);
  int n_b_l = number_lines;    // 待處理線條數(shù)目
  for (int i = 0; i < MAX_LINES && (n_b_l > 0); ++i)
  {
    if (line_slots[i] == true)
    {
      if (background_line[i][0] + background_line[i][2] <= 0)    // 說(shuō)明線條出了屏幕
      {
        --number_lines;
        line_slots[i] = false;
      }
      else
      {
        background_line[i][0] -= 10;        // 線條移動(dòng)
        line(background_line[i][0], background_line[i][1], background_line[i][0] + background_line[i][2], background_line[i][1]);
      }
      --n_b_l;
    }


  }
}


int generate_line()
{
  if (number_lines >= MAX_LINES)
    return -1;
  ++number_lines;
  for (int i = 0; i < MAX_LINES; ++i)
  {
    if (line_slots[i] == false)
    {
      line_slots[i] = true;
      background_line[i][0] = 640;        // 線條出現(xiàn)于屏幕最右邊
      background_line[i][1] = rand() % 480;    // 線條高度隨機(jī)
      background_line[i][2] = 10 + rand() % 50;  // 線條長(zhǎng)度隨機(jī)在 10-50 像素之間


      break;
    }
  }
  return 0;
}


int create_p_b()
{
  if (number_p_b > MAX_PLAYER_BULLETS)      // 空間不夠
    return -1;
  for (int i = 0; i < MAX_PLAYER_BULLETS; ++i)  // 搜索 slots,尋找空位
  {
    if (p_b_slots[i] == false)
    {
      p_b_slots[i] = true;
      player_bullet[i][0] = player_pos[0] + 45;
      player_bullet[i][1] = player_pos[1];  // 創(chuàng)建子彈
      ++number_p_b;
      break;
    }
  }
  return 0;
}


int create_e_b()
{
  if (number_e_b > MAX_ENEMY_BULLETS)        // 空間不夠
    return -1;
  for (int i = 0; i < MAX_ENEMY_BULLETS; ++i)    // 搜索 slots,尋找空位
  {
    if (e_b_slots[i] == false)
    {
      e_b_slots[i] = true;
      enemy_bullet[i][0] = enemy_pos[0] - 45;
      enemy_bullet[i][1] = enemy_pos[1];    // 創(chuàng)建子彈
      ++number_e_b;
      break;
    }
  }
  return 0;
}


int destroy_p_b(int index)
{
  if (index > MAX_PLAYER_BULLETS - 1)
    return -2;
  if (p_b_slots[index] == false)
    return -1;
  p_b_slots[index] = false;
  --number_p_b;
  return 0;
}


int destroy_e_b(int index)
{
  if (index > MAX_ENEMY_BULLETS - 1)
    return -2;
  if (e_b_slots[index] == false)
    return -1;
  e_b_slots[index] = false;
  --number_e_b;
  return 0;
}

大家趕緊去動(dòng)手試試吧!

此外,我也給大家分享我收集的其他資源,從最零基礎(chǔ)開(kāi)始的教程到C語(yǔ)言C++項(xiàng)目案例,幫助大家在學(xué)習(xí)C語(yǔ)言的道路上披荊斬棘!

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136861
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73657

原文標(biāo)題:C/C++項(xiàng)目實(shí)戰(zhàn):2D射擊游戲開(kāi)發(fā)(簡(jiǎn)易版),440 行源碼分享來(lái)啦~

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    同樣是函數(shù),在CC++中有什么區(qū)別

    ,即使沒(méi)有數(shù)據(jù)返回,也得寫(xiě) void。 第二個(gè)函數(shù)名。 C語(yǔ)言的函數(shù)名絕對(duì)不能重名,除了用上 weak 這樣的黑科技。同一個(gè)項(xiàng)目中,函數(shù)重名就會(huì)提示重復(fù)定義。 C++因?yàn)楹瘮?shù)重載的存在,函數(shù)名可以相同,只要參數(shù)有區(qū)別就行。這兩個(gè)
    的頭像 發(fā)表于 11-29 10:25 ?319次閱讀

    C語(yǔ)言和C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?231次閱讀

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺(jué)得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優(yōu)化與整理,已經(jīng)是非常貼近開(kāi)發(fā)的使用習(xí)慣與推理方式。與OpenCV的Mat對(duì)象對(duì)接方式
    的頭像 發(fā)表于 07-26 09:20 ?916次閱讀

    C++語(yǔ)言基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《C++語(yǔ)言基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:58 ?7次下載

    C++中實(shí)現(xiàn)類(lèi)似instanceof的方法

    函數(shù),可實(shí)際上C++中沒(méi)有。但是別著急,其實(shí)C++中有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)類(lèi)似Java中的instanceof的功能。 在 C++ 中,確定對(duì)象的類(lèi)型是編程中實(shí)際需求,使開(kāi)發(fā)人員
    的頭像 發(fā)表于 07-18 10:16 ?592次閱讀
    <b class='flag-5'>C++</b>中實(shí)現(xiàn)類(lèi)似instanceof的方法

    通過(guò)2D/3D異質(zhì)結(jié)構(gòu)精確控制鐵電材料弛豫時(shí)間

    受經(jīng)典德拜弛豫啟發(fā)的米勒模型提供了通過(guò)操縱弛豫時(shí)間來(lái)控制自發(fā)極化的理論框架。作者通過(guò)使用層轉(zhuǎn)移技術(shù)形成的2D/C-3D/2D異質(zhì)結(jié)構(gòu)克服了傳統(tǒng)異質(zhì)結(jié)存在的鐵電性惡化和能量損失的問(wèn)題。
    的頭像 發(fā)表于 04-29 10:27 ?682次閱讀
    通過(guò)<b class='flag-5'>2D</b>/3<b class='flag-5'>D</b>異質(zhì)結(jié)構(gòu)精確控制鐵電材料弛豫時(shí)間

    鴻蒙OS開(kāi)發(fā)實(shí)例:【Native C++

    使用DevEco Studio創(chuàng)建一個(gè)Native C++應(yīng)用。應(yīng)用采用Native C++模板,實(shí)現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫(kù)的功能。使用C標(biāo)準(zhǔn)庫(kù)hypot接口計(jì)算兩個(gè)給定數(shù)平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2635次閱讀
    鴻蒙OS<b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    在前兩篇博客中,我們?向您介紹了新的 MISRA C++ 標(biāo)準(zhǔn)?和?C++ 的歷史?。在這篇博客中,我們將仔細(xì)研究以 C++ 中?for?循環(huán)為中心的特定規(guī)則。
    的頭像 發(fā)表于 03-28 13:53 ?800次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    請(qǐng)問(wèn)CubeIDE如何支持C++開(kāi)發(fā)?

    CubeIDE如何支持C++開(kāi)發(fā)。有沒(méi)有一些例程。
    發(fā)表于 03-25 06:22

    谷歌DeepMind推新AI模型Genie,能生成2D游戲平臺(tái)

    據(jù)報(bào)道,谷歌公司的DeepMind團(tuán)隊(duì)近期發(fā)布了AI模型Genie,此模型擁有多達(dá)110億個(gè)參數(shù),能夠依據(jù)用戶(hù)提供的圖片及提示詞創(chuàng)建出相當(dāng)完整的2D游戲場(chǎng)景。
    的頭像 發(fā)表于 02-27 14:53 ?785次閱讀

    c語(yǔ)言,c++,java,python區(qū)別

    C語(yǔ)言、C++、Java和Python是四種常見(jiàn)的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言: C語(yǔ)言是一種面向過(guò)程的編程語(yǔ)言。它具有底層的特性,能夠?qū)τ?jì)算機(jī)硬件進(jìn)行直接操作。
    的頭像 發(fā)表于 02-05 14:11 ?2394次閱讀

    vb語(yǔ)言和c++語(yǔ)言的區(qū)別

    Microsoft開(kāi)發(fā)的一種面向?qū)ο蟮氖录?qū)動(dòng)編程語(yǔ)言。它的設(shè)計(jì)目標(biāo)是簡(jiǎn)化編程過(guò)程,讓初學(xué)者也能快速上手。與之相比,C++語(yǔ)言是一種通用的、面向?qū)ο蟮木幊陶Z(yǔ)言,其設(shè)計(jì)目標(biāo)是提供高性能的系統(tǒng)級(jí)編程。 語(yǔ)法: VB語(yǔ)言的語(yǔ)法較為簡(jiǎn)單,使用了很多可讀性強(qiáng)的關(guān)鍵詞,如“
    的頭像 發(fā)表于 02-01 10:20 ?2326次閱讀

    C++在Linux內(nèi)核開(kāi)發(fā)中從爭(zhēng)議到成熟

    Linux 內(nèi)核郵件列表中一篇已有六年歷史的老帖近日再次引發(fā)激烈討論 —— 主題是建議將 Linux 內(nèi)核的開(kāi)發(fā)語(yǔ)言從 C 轉(zhuǎn)換為更現(xiàn)代的 C++。
    的頭像 發(fā)表于 01-31 14:11 ?633次閱讀
    <b class='flag-5'>C++</b>在Linux內(nèi)核<b class='flag-5'>開(kāi)發(fā)</b>中從爭(zhēng)議到成熟

    C++簡(jiǎn)史:C++是如何開(kāi)始的

    MISRA C++:2023,MISRA? C++ 標(biāo)準(zhǔn)的下一個(gè)版本,來(lái)了!為了幫助您做好準(zhǔn)備,我們介紹了 Perforce 首席技術(shù)支持工程師 Frank van den Beuken 博士撰寫(xiě)
    的頭像 發(fā)表于 01-11 09:00 ?598次閱讀
    <b class='flag-5'>C++</b>簡(jiǎn)史:<b class='flag-5'>C++</b>是如何開(kāi)始的