[入門級] 如何用 Mac OS X 的 Xcode 寫 C 語言程式

Mac OS X 使用xcode编写连接mysql的C程序 1. 下载并安装Connector/C1.1 在https://dev.mysql.com/downloads/connector/c/ 下载mac os x的Connector/C,本文下载的是 mysql-connector-c-6.1.11-macos10.12-x86_64 1.2安装Connector/C,默认安装路径为 /usr/local/mysql-connector-c-6.1. 阅读详情

Acknowledgement:

http://blog.yorkxin.org/2009/03/15/fundamental-c-with-xcode


Deprecation Warning: 這篇是寫 Xcode 3.1.x 的故事。 4.x 的使用者介面變很多,這篇教學可能不適合。

這篇是給新手看的。

如果你在 Windows 習慣使用 Visual C++ 或 Dev-C++ 的話,到了 Mac OS X 可能會突然不知道要怎麼寫程式,尤其當你已經用 Visual C++ 的 Debugger 用得很上手的話。

最近我們系上的課充滿了 C programming,我也稍微摸懂了 Xcode 的若干功能,至少我可以拿它來寫 C 語言的程式了,就像在 Windows 使用 Visual C++ 那樣。

如果這篇只是要教你怎麼按 Compile 的話,那我就是來騙文章數的了。因此這篇的內容還包括怎麼使用 Xcode 的 Debugger ,ㄎㄎ。


安裝 Xcode

首先當然是去 Apple 的網站 下載 Xcode (免錢,但需註冊 Apple Developer Connection 帳號,也是免錢),如果你買的機器夠新的話,可以直接拿出安裝光碟第一片,在「Optional Install」資料夾裡面找到最新的 Xcode 的安裝檔。下載回來裡面有一個橘色的包裹,按兩下然後照指示安裝 (通常就一直按「繼續」)。

安裝完成後,可以在「硬碟 → Developer → Applications」這個資料夾裡面找到 Xcode ,按兩下開啟。

新增 C 語言專案

按下功能表列的 「File → New Project」 … ,選擇「Command Line Tool」裡面的「Standard Tool」

update: Xcode 3.1.2,選 Application ,右選邊 Command Line Utility,然後在下方選取你要用的語言,如 C (標準是 C89) 或 C++

image

接著按下 「Choose…」,輸入你要放置專案的目錄,並輸入專案名稱(會在你目前選擇的目錄裡再開一個新的資料夾),就好了。

image

這是 Xcode 的專案視窗基本配置。

image

上方工具列由左至右分別是:

  • Overview:編譯選項,可以選擇要在 Debug 模式或 Release 模式,以及目標作業系統 (10.4 或 10.5)
  • Action:一些針對專案快速呼叫的指令
  • Build:編譯
  • Build and Go:編譯並執行
  • Run:執行目前已編譯的程式(如果之前沒編譯的話就不能按)
  • Debug:進入除錯模式
  • Tasks:停止目前執行的程式。如果啟動多個程式,就有一個小三角形讓你選要停哪一隻
  • Info:取得簡介 (好像是廢話…)

自動完成

Xcode 的編輯器具備自動完成的功能。其實不用我介紹你應該就會了,因為你在打字的時候就會發現。變數名稱可以、#define token 可以、函式 prototype 可以、struct 元素也可以,甚至你在 #include 的時候也可以讓你看到有哪些 Library 你可以用的。

image

當游標後面出現反白的淡字,按下 Tab 會立刻套用目前顯示的自動完成,按下 Esc 可以讓你看到其他的可用自動完成。

image

而且大小寫通吃,如果變數名稱是大寫的,你直接打小寫還是可以做自動完成,按下 Tab 就會出現正確的大小寫;如果你繼續打,打到再也找不到自動完成,Xcode 就知道你要的不是這個變數名稱,就照著你打的大小寫輸出。

image

必須注意的是,如果你的函式是來自其他的 Header ,必須要先 Build 過 (error 也無妨) 才能出現自動完成。例如我剛引入 string.h ,但 Xcode 還不知道 string.h 裡面有什麼東西。按一下 Build 它就會把 string.h 裡面有的東西放入自動完成了。

image

編譯原始碼

「編譯與執行」這件事對於用慣 Visual C++ 的人應該不陌生,所以這裡也沒甚麼好說的。

Xcode 在出現編譯錯誤或警告的時候,會自動在編輯區出現錯誤,像這樣:

image

如此你就不必再到 Compile Output 裡面找看是哪一行了。

編譯的快速鍵是 Command + B ,直接按這個會比移動滑鼠游標還方便。

執行程式

Xcode 在執行程式的時候,並不是丟到終端機.app ,而是在它自己的 Console 裡面做輸入輸出的行為。可能是因為 Xcode 是以 GUI 應用程式為主要導向,所以預設它並沒有開啟 Console,你必須手動開啟,在 Preferences 的 Debugging 分頁裡面:

image

接著來試著執行一個具備輸入輸出的簡單程式。按下 Build & Go (快速鍵是 Command + R,跟 Safari 的重新整理是一樣的),操作方式就跟 Visual C++ 或 Dev-C++ 在命令提示字元裡面是差不多的,只是它背景是白色,而且程式結束不會把 Console 關掉:

image

如果你執行到一半想把程式關掉,只要按下紅色的八角牌 (Stop) 就行了。

教練,我想寫 ANSI C

你是否有這種經驗:當你的 C 程式寫好了,而且可以在自己的電腦編譯、執行,但丟到 Online Judge (例如 人稱 ACM 的那家 ,或 零架雞) 選 C 語言卻噴 Compile Error ?其實這是因為你沒有用標準的 ANSI-C 語法來寫。最明顯的差異在於,ANSI-C 不支援以 // 開頭的註解。

那能不能強迫 Compiler 自動以 ANSI-C 模式編譯呢?well,這件事在 Visual C++ 做不到,但在 Xcode (或說使用 GNU C Compiler 為編譯器的 IDE) 就做得到:

首先在左欄的專案圖示上按滑鼠輔助鍵 (右鍵,或 Ctrl + 按一下),選擇 Get Info

image

切換到 Build 分頁,在右上角的搜尋框輸入 ansi 這四個字,你就會看到它像 Spotlight 一樣幫你找到這個選項: GCC 4.0 - Language / C Language Dialect 。把它改成 ANSI C [-ansi] 就行了。

image

現在再按 Build,你應該知道哪裡有錯了。

image

使用 Debugger

Xcode 最讓我喜歡的,是它與 GDB 有很好的整合,這對於我這種不熟悉命令列式 debugging 的人來說是相當棒的功能。 GDB 在命令列模式,你要自己下斷點(告訴它在第幾行)、自己下指令 backtrace, continue etc.);但有了 Xcode ,你只要有滑鼠就行了。

以下以一個簡單的小程式做範例:

a_simple_program.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>

/* global variables */
int i_am_a_global_variable;

/* functions */

void another_function (int* a)
{
  *a = 999;
  i_am_a_global_variable = (*a)++;
  return;
}

int some_function (int a)
{
  int some_local_var = a;
  printf("some_local_var has been changed to %d\n", some_local_var);
  another_function(&some_local_var);
  printf("some_local_var has been changed to %d\n", some_local_var);
  return 0;
}

int main (void)
{

  int number;
  printf ("enter number:");
  scanf("%d", &number);

  some_function(number);
  printf("You’ve entered %d\n", number);
  return 0;
}

在 GDB 裡面,斷點的定義是「在執行這一行之前先回到 debugger」,也就是說如果你把斷點設在第 12 行,那麼它會在執行第 12 行之前暫停程式執行,進入 debugger。

設斷點的方法很簡單,在行號上按一下滑鼠鍵就行了。斷點可以移動,用滑鼠拖曳便是。拿掉斷點,只要把它拉出行號區就行了,就像 Dock 一樣直觀操作。

現在我把斷點設在第 33 行,也就是 some_function(number) 這一行。

然後先按榔頭 (Build) 再按殺蟲劑 (Debug)。接著應該會開啟 Console。先在 Console 裡輸入數字,再按下 Enter,程式會立刻暫停。如果沒有出現 Debugger,那麼請按下功能表的 「Run → Debugger」 (快速鍵是 Shift + Command + Y)

你會看到 debugger 標示停在哪一行,右上角的窗格還會出現目前存在的區域變數

image

接著我再多設兩個斷點,分別在第 11 行和第 20 行 (不用停下來,直接按)。然後按下 Continue (一半暫停、一半播放的綠色圓形按鈕),當它執行到 another_function 這行之前,就會再暫停下來進入 Debugger 。你會發現左上角也有變化,沒錯,這個就是 Function Call 的 Stack。你可以在不同的 Stack 之間切換,右邊的窗格會出現不同的 Local Variables。

image

接著再按一下 Continue,會跳到第 13 行,出現第三層 Function Call。你會發現在右上角的窗格會顯示傳進去的指標的記憶體位址和指標所指的記憶體內容:

image

如果要看全域變數比較麻煩一點,因為 Xcode 設想在執行程式時所使用的 Library (System Call) 也可能存在許多你不想知道的全域變數,因此要手動開。

在 Debugger 右上角窗格的 Globals 左邊那個小三角形按一下(或在 Globals 字樣按兩下),會出現另一個視窗叫 Globals Browser,在左邊選取你的程式名稱,在右邊把你要顯示的全域變數打勾,關掉這個 Globals Browser,回到 Debugger,再按一下 Globals 的小三角形,就有啦。

image

這裡為了實驗這個功能,再多按一個斷點在第 12 行:

image

再來一個小範例,這次是陣列:

array.c
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main(void)
{
  int array[] = {1, 2, 3, 4, 5};
  int i;
  for (i = 0; i < 5; i++) {
    printf ("array #%d is %d\n", i, array[i]);
  }
  return 0;
}

我們把斷點設在第 8 行,再按 Build,再按 Debug ,你會發現它把陣列的內容顯示在右上方的窗格:

image

那如果是動態產生的陣列呢?

我們知道 malloc, calloc, realloc 傳回來的是它所分配到的記憶體的開頭位址,那 Xcode 會不會很聰明的把它當作陣列呢?

答案是….不會!雖然 Visual C++ 也不會。

我們把上面這段程式修改成 calloc 的方式:

dynamic_alloc.c
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int *array = (int *) calloc(5, sizeof(int));
  int i;
  for (i = 0; i < 5; i++) {
    printf ("array #%d is %d\n", i, array[i]);
  }
  free(array);
  return 0;
}

把斷點設在第七行 (int i; ),再 Build,按 Debug ,開啟 debugger:

image

從上圖我們知道兩件事:

  • 其一array 宣告成 int *,所以 Xcode 抓的是它的記憶體位址。
  • 其二、它用int 的方式去讀取 *array 指向的記憶體內容,所以得到的是首項的值 0 (calloc 會把分配到的內容全部清成 0 )。

那如果要看 array[1] 或其他內容的話怎麼辦呢?

這時候就要用 Expression Monitor 了,它在功能表的「Run → Show → Expressions…」,懶得選的話可以按 Help 然後輸入exp 搜尋

link

開啟 Expression 視窗,然後在下方輸入你要監視的運算式,當然也可以存取記憶體位址;要刪掉運算式的話直接選取然後按鍵盤上的 Delete (Backspace) 就行了:

image

Debugger 我會用的功能大概就這樣… 不過我覺得這樣也就夠了,用這些就足以 de 出邏輯上的錯誤。

字型設定

我們每天看 code 的人,總是希望它們要長得順眼,才看得下去。Xcode 當然也可以調整字型,不過改的方法跟一般的編輯器不太一樣。

首先進入 Xcode 的 Preferences 設定。

如果要改 Debugger Console 的字型的話,是在 Preferences 的 Debugging 分頁,選擇你要修改的項目,按一下「Set Font…」就行了:

image

不過它有五項可以調整,如果你有改其中一項的話,建議其他四項也改一改,看起來比較協調:

image

至於程式碼編輯區的字型,則是放在 Fonts & Colors 裡面。不過因為要改的項目實在太多,~~就改天吧,~~ 這裡教你一個小撇步:先按 Command + A 全選,然後在第二欄按兩下,就可以一次改全部了:

image



在Mac OS X 用C++编写OpenGL程序 Mac OS X中自带的OpenGL库和GLUT库,我们在编译自己的C++代码的时候,只需要将这两个框架加入进去就好。 命令的形式编译如下: g++ -framework OpenGL -framework GLUT -o TestPrj main.cpp 那么上面的命令怎样在编译器中加入呢? Eclipse加入OpenGL Framework 选中某个要编译的工程打开Prope 阅读详情

相关推荐

Mac OS X 安装 OpenCV2.4.3【详述】

最近给MacBook装OpenCV走了很多弯路,读了很多帖子和Blog,但感觉都和我遇到的情况有些不同,他们的博客也写的很简略,所以出于以上几点原因加上想做一下备忘,写了这篇很详细很冗长的Blog。 ---------------------------------------------------------------------------------------------------

china_lzn的专栏 1万+

Xcode 输出多颜色Log

每天看着Xcode输出的Log 都是一个颜色,各种信息区分起来很是闹心,如果可以输出多种颜色的Log,区分起来就方便多了。XCodeColors这个插件可以让我们实现输出多颜色的Log。 安装 XCodeColors,下面两个方式二选一: XCodeColors(github入口) 用Alcatraz安装更方便(推荐)安装完成之后需要在项目中添加以下代码。 #define XCODE_COLORS

vip_虎子的博客 1973

OS 6.828工具安装 (Mac OS X)

MIT OS 6.828 course tools installation on Mac OS XEnvironmentPreparationInstalling the cross compiler The official website of os 6.828 provide inadequate instructions to install JOS lab tools on OS X system. Here are records of my installation. Environment

学习记录本 805

使用Xcode编写C语言

Xcode是在mac上开发c和c++、objective-c、swift的集成开发环境(也就是多个功能集合在一起来开发程序的软件)是免费且不开源的。

m0_61843258的博客 6702

Mac OS 、Xcode、iOS版本更新时间

版本历史: Mac OS X v10.0 Cheetah 10.0.0 4K78 2001年3月24日 10.0.1 4L13 2001年4月14日 10.0.2 4P12 2001年5月1日 10.0.3 4P13 2001年5月9日 10.0.4 4Q12 2001年6月21日 Mac OS X v10.1 Puma 10.1.0 5G64 2001年9月25日 10.1

iOSBin的博客 1306

苹果MAC系统怎么编译C语言

1.使用Xcode软件。Xcode是一个苹果系统上的集成开发环境(IDE),就是说用Xcode就能编写C语言程序,并编译运行。也能开发ios程序等,是一种软件。在windows上类似这种能编c语言的还有微软出的visual studio,和其他免费的一些如codeblocks,c-free等。 在Xcode中编译运行C/C++的操作步骤: 1)打开Xcode,在欢迎界面点击Create a new...

Jovan的博客 1万+

Go语言的开发环境配置的经验总结

转自:http://my.oschina.net/qinhui99/blog/57046 传说go语言的最佳开发环境是苹果的XCODE,我测试的结果确实如此。需要用CGO编译带C代码的go程序的朋友,建议首选苹果的XCODE环境。Windows环境下配置CGO编译非常麻烦,因为Go的文档例子大多以UNIX为例子,所以有些C代码在windows下无法编译,需要修改代码。 我用到的go语言版本

wolinxuebin的专栏 2万+

使用Xcode在Mac OS X平台构建OpenCASCADE C/C++应用程序

在"Build Settings"中,找到"Header Search Paths"设置,并将OpenCASCADE库的路径添加到其中。例如,如果您将OpenCASCADE库放在"/path/to/opencascade"目录中,那么您需要添加"/path/to/opencascade/inc"作为头文件的搜索路径。例如,如果您将OpenCASCADE库放在"/path/to/opencascade"目录中,那么您需要添加"/path/to/opencascade/lib"作为库文件的搜索路径。

HackVibe的博客 424

Mac下ansi和unicode的转换

如果使用Carbon开发那么你就使用Carbon,就用CFStringRef类,Carbon就是Mac平台使用C开发的一套Framework,如果使用Cocoa那么就是用NSString。他们都能很好的支持unicode和ansi。如果要脱离这些使用系统底层的API,那么你就是用iconv函数。简介如下:在shell中使用如下。$ iconv --list # 显示可识别的编码名称$ ic

larntin 8769

Swift之 vm10虚拟机安装Mac OS X10.10教程

VM10装Mac OS X 10.9.3及更新到Mac OS X 10.10,让你的windows也能玩Swift 。 最近WWDC放出终极大招——新的编程语言Swift(雨燕),导致一大波程序员的围观和跃跃欲试。当然了,工欲善其事,必先利其器,所以对于那些没有Mac又想要尝鲜的小伙伴肯定很为难。但是,请放心,本文教你如何在Windows下也能体验Mac的滋味,当然咯,最主要的还是体验新的语

GY的的专栏 1万+

46、Mac OS X 开发:Xcode 工具全解析

本文全面解析了Mac OS X开发中使用的Xcode工具,从开发者会员的选择、Xcode的安装步骤到Xcode的界面功能进行了详细介绍。同时,还涵盖了Xcode的偏好设置配置、文档使用技巧以及项目组织方式,为开发者提供了一站式的Xcode开发指南。无论是新手还是有经验的开发者,都能从中获取实用的信息,提升开发效率。

zero1的博客 122

使用XCode建立一个MAC OS X应用

(1)使用XCode建立一个MAC OS X应用: 第一步:打开XCode,新建一个OSX应用->Cocoa Application 第二步:点击*.xib文件,出现一个窗口,然后从左边拖一个按钮在窗口里,然后按 Ctrl+鼠标右键 +拖动按钮到*.m文件最后一行前,增加这个函数。 第三步:拖一个标签到窗口,然后同样Ctrl+鼠标左键+拖动到*h里面,然后拷贝增加的这行代码到第

MAC 应用开发 8371

Cocoa编程权威指南:Mac OS X开发精要(第4版)

为了适应应用的设计需求,经常需要自定义控件的外观。这可以通过覆盖控件的默认绘制方法或者在Interface Builder中使用属性检查器来设置。虽然Interface Builder提供了丰富的标准控件,但有时候我们需要创建自定义控件来满足特定的需求。这可以通过继承现有的控件类并在Interface Builder中使用来实现。AppKit也允许开发者通过继承现有的组件类来自定义UI组件,以适应特定的应用需求。

weixin_35671843的博客 950

用Xcode创建一个C语言项目并编写C语言程序

在 Mac OS X 下学习C语言使用 Xcode。Xcode 是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等,可以用来开发 Mac OS X 和 iOS 上的应用程序。Xcode最初使用GCC作为编译器,后来由于GCC的不配合,改用LLVM/Clang。 在Xcode上运行C语言程序 在 Xcode 上运行C语言程序需要先创建工程,再在工程中添加源代码。 ...

姚蔚敏的博客 1万+

国产谷歌地球,地形分析秒杀同款地图软件

咱们做地质、林业、水文、水利、电力、GIS、地图、水保、环境的,需要经常用到各种数据,比如影像、地形、矢量、模型等,但目前80%的规划大数据展示都离不开ArcGIS,令人头大的是很多朋友连ArcGIS软件安装起来都费劲。。。 那不会ArcGIS又装不了Google Earth怎么开展工作? 今天推荐大家一款国产免费专业地图浏览下载测量分析神器—图新地球 图新地球,国产三维gis软件。可以查看高清卫星影像地形以及其他很多常用电子地图,对地图需求的掌握远胜过Google Maps,而且上手比国外软件要简单

GISWorld3D的博客 3685

bugku渗透测试4-writeup

三、对这个主机进行全端口的扫描,发现存在22000 ssh端口,那么可以联想到时redis写入公钥来连接主机。又来了一个新的靶场,这个靶场打下来我觉得关键就是信息收集,走了很多的弯路。八、最后一个flag是要去看cms的数据库里面,这个数据库是sqlite。把这个数据库下载下来,登录密码是加密的,就直接用token。一、入口的漏洞是在登录的时候去抓包,修改action的值。六、没想到这个第一台机器的密码,在第二台里面。七、扫描第一台主机、使用之前的密码连接成功。获取最后一台主机的root密码。

vsdfbhsdhsdfh的博客 1294

00. Xcode 使用以及 OS X 项目创建

本系列专题深入介绍了macOS平台应用开发中AppKit系统控件,涵盖appkit、cocoa、foundation等框架,专注于OSX系统下的应用程序开发。内容广泛,包括UI设计、网络编程、数据存储、服务协议、I18N国际化、iCloud集成以及应用证书与App Store发布等。每篇文章均附有完整的Swift语言源码下载,UI设计则通过storyboard实现。

编程是一门实践技术 1693

告别Keil,在Windows上用VSCode + arm-none-eabi-gcc + Makefile搭建国产MCU开发环境(附JLink配置避坑)

本文详细介绍了如何在Windows上使用VSCode、arm-none-eabi-gcc和Makefile搭建国产MCU开发环境,替代传统的Keil和IAR。内容涵盖工具链配置、工程结构设计、Makefile编写、VSCode集成调试以及高效开发工作流,特别针对国产MCU如复旦微FM33系列提供了优化方案和避坑指南。

weixin_28729205的博客 431

Vmware 8 安装 MAC OS X Lion 10.7.3

最近弄了个新机器,装了win 7,速度和空间都不错,准备弄个苹果系统玩玩 准备工作: 1.下载虚拟机vmware 8.0.3: ed2k://|file|%5B%E8%99%9A%E6%8B%9F%E5%B7%A5%E4%BD%9C%E7%AB%99%5D.VMware.Workstation.v8.0.3.Incl.Keymaker.REPACK-EMBRACE.zip|4717984

龙头老大的专栏 8612

ArcGIS插值可视化气象数据

前言 地图底图的制作和气象数据的预处理见我上两篇博客 ArcGIS精美中国地图制作(详解) python处理日值气象数据 在前面我们已经将日值的地温数据处理成了年均地温,添加了站点经纬度坐标并导出为excel格式。 得到如下数据: 导入数据 在Arcmap中 文件-添加XY数据 将年均地温和站点位置数据导入。 注意:excel表格的格式要另存为97-2003工作簿形式,否则会有"arcgi...

江北20190411的博客 2万+

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

在Mac OS X上安装Git和简单使用

如果你正在使用Mac做开发,有两种安装Git的方法。 一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。 这里只做简单介绍:首先打开终端复制、粘贴以下命令,回车 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/...

touch929的博客 2815

手机开发实战58——小区广播介绍2

业务 针对小区广播短消息的特点,可以提供一些基于目前短消息不能或不适合提供的服务: 1. 显示网络服务基站名称:用户可以随时了解手机登记在哪个基站下,特别是在边界交叉覆盖区域,用户可以清楚的知道通话建立在哪个基站下,在用户投诉和故障描述中也会有所帮助; 2. 提供用户问候信息:可以在覆盖机场、车站等地区的基站广播一些用户问候语或一些企业形象广告语; 3. 充分利用小区广播地

xjbclz的专栏 772
上一篇: Use IE on MAC
下一篇: 双向链表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值