在windows下我们往往使用CB(CodeBlocksks)进行acm的编程,不用建立工程,可以直接编译并运行,然后弹出黑框框,sublime也是这样,只要MinGW搞好就行

在ubuntu下我也常常使用CB,虽然有时候会出现小问题,但是还是非常稳定的

在mac os下就比较头疼,CB是远古版本了,而且在OSX下可能闪退,但是我们总不可能使用Xcode进行C/C++代码编写吧,比较麻烦

先后配置了sublime和VSCode,最终还是选择了VSCode,比较简单好用

去微软官网下载之后拖到应用程序打开,然后下载C/C++的MS插件,然后下载codeRun(因为task的体验不好,不能编译并运行)

编译和运行其实就是一行命令行的事("g++ A.cpp -std=c++11 -o A && ./A),我们配置codeRun到这样,然后加入一些人性化操作

这个就是setting.json,可以点击查看->命令面板->找到设置

    // 在终端中运行编译命令,否则我们无法与程序通过标准输入交互
"code-runner.runInTerminal": true,
// 运行代码之前清除之前的输出
"code-runner.clearPreviousOutput": true,
// 开启这个后在运行编译命令之前会自动 cd 至文件所在目录
"code-runner.fileDirectoryAsCwd": true,
// 这里只保留了 C 和 C++ 的编译命令,有需要其他语言的请自行添加
"code-runner.executorMap": {
"c": "gcc $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt",
"cpp": "g++ $fileName -std=c++11 -o $fileNameWithoutExt && ./$fileNameWithoutExt",
},
// 运行代码后切换焦点至终端,方便直接输入测试数据
"code-runner.preserveFocus": false,
// 在运行代码之前保存文件
"code-runner.saveFileBeforeRun": true,

但是你会发现你可能没有一个正常的GCC编译器,如果有Xcode,那么将是clang,他不支持万能头文件,而且标准不太一样

这时候可以通过Homebrew安装GCC

如果没有安装Homebrew可以在终端执行这个指令,关于这个东西的介绍和使用可以到这里 https://brew.sh/index_zh-cn.html

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装gcc也很简单

brew install gcc

安装好了只要改一下~/bash_profile就好了,加入如下几行,因为我是安装的9,至于你是多少请随机应变

export PATH="/usr/local/Cellar/gcc/9.1.0/bin:$PATH"
alias gcc='gcc-9'
alias g++='g++-9'
alias c++='c++-9'

可以刷新下系统文件

 source ~/.bash_profile

输入g++-9 -v(其实这个时候和g++ -v等效的)显示这一坨就说明你好了,你在命令行编译cpp文件就可以使用万能头文件了

sing built-in specs.
COLLECT_GCC=g++-
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/9.1./libexec/gcc/x86_64-apple-darwin18/9.1./lto-wrapper
Target: x86_64-apple-darwin18
Configured with: ../configure --build=x86_64-apple-darwin18 --prefix=/usr/local/Cellar/gcc/9.1. --libdir=/usr/local/Cellar/gcc/9.1./lib/gcc/ --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=- --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 9.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
Thread model: posix
gcc version 9.1. (Homebrew GCC 9.1.)

然后VSC右键或者快捷键直接运行,就可以get到酸爽了

使用gdb进行调试

方便的进行ifdef

cd /usr/local/Cellar/gcc/9.2.0_3/include/c++/9.2./x86_64-apple-darwin19/bits

然后修改stdc++.h
加上

#define bob
#define LOG(FMT...) fprintf(stderr, FMT)

然后我本机就可以开头

    #ifdef bob
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
int nol_cl = clock();
#endif

结尾

    #ifdef bob
LOG("Time: %dms\n", int((clock() - nol_cl) / (double)CLOCKS_PER_SEC * ));
#endif

快捷键

通用

⇧⌘P, F1 显示控制台

⌘P 快速打开,快速查找并进入文件

⇧⌘N 新建窗口(不是文件)

⌘W 关闭窗口

基本编辑

⌘X 删除整行 (不需要选中)

⌘C 复制整行 (不需要选中)

⌥↓ / ⌥↑ 上下移动整行

⇧⌥↓ / ⇧⌥↑ 复制整行,并粘贴到此行的上面/下面

⇧⌘K 删除行

⌘Enter / ⇧⌘Enter 插入行

⇧⌘\ 光标跳到对应的括号

⌘] / ⌘[ 缩进

Home / End 跳到行首行尾

⌘↑ / ⌘↓ 跳到首行或尾行

⇧⌘[ / ⇧⌘] 折叠和展开区域(验证了一下,这个组合键是左右切换文件)

⌘K ⌘[ / ⌘K ⌘] 折叠或展开选中的区域

⌘K ⌘0 / ⌘K ⌘J 折叠或展开所有的区域

⌘K ⌘C 加注释

⌘K ⌘U 删除注释

⌘/ 删除或注释

⇧⌥A 给选中的代码添加或删除注释(/* */)

⌥Z 切换自动换行

搜索和替换

⌘F 查找

⌥⌘F 替换

⌘G / ⇧⌘G 查找下一个或上一个

⌥Enter 选择所有的查找结果(不懂)

⌘D Add selection to next Find match

⌘K ⌘D Move last selection to next Find match

导航栏

⌘T 展示所有符号(显示本文件中的所有函数)

⌃G 去到指定行

⌘P 快速打开文件

⇧⌘O 跳到某个函数

⇧⌘M 显示报错面板

F8 / ⇧F8 跳到下一个/前一个错误或警告

⌃⇧Tab 导航所有打开的文件

⌃- / ⌃⇧- 最近查看的文件之间跳转

⌃⇧M 切换选项卡移动焦点(不懂)

编辑器管理

⌘W 关闭编辑器

⌘K F 关闭文件夹

⌘\ 拆分编辑器

⌘1 / ⌘2 / ⌘3 切换到第1,2,3个编辑器

⌘K ⌘← / ⌘K ⌘→ 切换编辑器组

⌘K ⇧⌘← / ⌘K ⇧⌘→ 编辑器左移右移

⌘K ← / ⌘K → 移动当前编辑器组

文件管理

⌘N 新建文件

⌘O 打开文件

⌘S 保存

⇧⌘S 另存为

⌥⌘S 保存所有文件

⌘W 关闭

⌘K ⌘W 关闭所有文件

⇧⌘T 重新打开关闭掉的文件

⌘K Enter 保持打开

⌃Tab / ⌃⇧Tab 打开下一个或前一个文件

⌘K P 复制当前文件的路径(不好使啊)

⌘K R 在浏览器中显示当前文件

⌘K O 在新窗口中显示当前文件

mac进行acm(C/C++)编程的更多相关文章

  1. 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。

    ACM的题库的编程都只能算做程序,不能算软件.写程序和做软件区别还是很大的.程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令.而软件是程 ...

  2. Qt在Mac OS X下的编程环境搭建

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  3. Mac iOS Mac Watch 应用和游戏编程开发工具推荐

    今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...

  4. Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  5. 【经验总结】Java在ACM算法竞赛编程中易错点

    一.Java之ACM易错点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非 ...

  6. 给ACM newer的编程技巧

    一.复杂度 1.1什么是复杂度? 在设计满足问题要求的算法时,复杂度的估算是非常重要的.我们不可能把每个想到的算法实现一遍看看是否足够快.应当通过估计算法的复杂度来判断所想的算法是否足够高效. 1.2 ...

  7. ACM竞赛 Java编程小结

    1.字符串的长度 String str = new String(" abcd"); int length = str.length(); 2.数组的长度.排序 2.1对于 a[] ...

  8. ACM YTU 挑战编程 字符串 Problem A: WERTYU

    Problem A: WERTYU Description A common typing error is to place yourhands on the keyboard one row to ...

  9. mac os 使用记录

    折腾过一台黑苹果,配置很菜,奔腾G3260和B150M-D2V,具体EFI和配置详见repo Hackintosh 首先要解决的就是写代码问题,mac进行acm(C/C++)编程 VS code天下第 ...

随机推荐

  1. C语言作用域、链接属性和存储类型

    C/C++中作用域详解 作用域 编译器可以确认的4种作用域-代码块作用域.文件作用域.函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域. (1)代码块作用域 一对 ...

  2. Linux下IP修改后重启服务器 oralce 出错(监听无法启动)

    针对linux下修改IP导致的Oracle不能启动问题的解决 主要修改/etc/hosts配置文件.修改前配置: # Do not remove the following line, or vari ...

  3. Office2010 破解(Microsoft Toolkit 2.4.3.exe)

    这两天破解刚安装好的office2010,总是报错 刚才重新下载了Microsoft Toolkit 2.4.3.exe工具后,破解成功,操作如下: 选择office按钮后,如下操作,

  4. 原生js实现头像大屏随机显示

    效果如下图所示: 一.html部分 <div class="myContainer"> <ul> <li class="first" ...

  5. PAT甲级——A1064 Complete Binary Search Tree

    A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...

  6. PAT甲级——A1033 To Fill or Not to Fill

    With highways available, driving a car from Hangzhou to any other city is easy. But since the tank c ...

  7. pytest框架-介绍、Mark(打标签)、命令运行用例、用例执行顺序、

    1.pytest介绍:基于unittest 之上的单元测试框架 1.1.自动发现测试模块和测试用例: unitest 需要添加用例,(泰斯特楼贷)加载器加载测试用例 pytest 只需要一条代码就可以 ...

  8. Neo4j Desktop 管理工具的安装和应用

    安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...

  9. 在scrapy中利用Selector来提取数据

    1.创建对象 Selector类的实现位于scrapy.selector模块,创建Selector对象的时候,可以将页面的Html文档字符串传递给Selector构造器方法 2.选中数据 调用Sele ...

  10. 关于hive表同步类型问题

    今天华为做实施的时候发现kylin做刷cube的时候发现源表数据类型不适合刷到kylin提供查询接口.问了下同事发现一个比较简单的解决办法. 源表是String类型,做hive视图可以做个hive表提 ...