mac进行acm(C/C++)编程
在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到酸爽了
方便的进行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++)编程的更多相关文章
- 4.“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。
ACM的题库的编程都只能算做程序,不能算软件.写程序和做软件区别还是很大的.程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令.而软件是程 ...
- Qt在Mac OS X下的编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- Mac iOS Mac Watch 应用和游戏编程开发工具推荐
今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...
- Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- 【经验总结】Java在ACM算法竞赛编程中易错点
一.Java之ACM易错点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非 ...
- 给ACM newer的编程技巧
一.复杂度 1.1什么是复杂度? 在设计满足问题要求的算法时,复杂度的估算是非常重要的.我们不可能把每个想到的算法实现一遍看看是否足够快.应当通过估计算法的复杂度来判断所想的算法是否足够高效. 1.2 ...
- ACM竞赛 Java编程小结
1.字符串的长度 String str = new String(" abcd"); int length = str.length(); 2.数组的长度.排序 2.1对于 a[] ...
- ACM YTU 挑战编程 字符串 Problem A: WERTYU
Problem A: WERTYU Description A common typing error is to place yourhands on the keyboard one row to ...
- mac os 使用记录
折腾过一台黑苹果,配置很菜,奔腾G3260和B150M-D2V,具体EFI和配置详见repo Hackintosh 首先要解决的就是写代码问题,mac进行acm(C/C++)编程 VS code天下第 ...
随机推荐
- spring cloud深入学习(十二)-----Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式
Zuul的核心 Filter是Zuul的核心,用来实现对外服务的控制.Filter的生命周期有4个,分别是“PRE”.“ROUTING”.“POST”.“ERROR”,整个生命周期可以用下图来表示. ...
- Eclipse使用过程的常见问题:
3-1 "Failed to load the JNI shared library" -jdk 与eclipse位数不一致出现的问题 解决方法: ...
- 关于开启Eureka安全Security认证后,客户端死活注册不上的问题
遇到一个问题"开启Eureka服务端的安全认证后,客户端死活注册不到Eureka上",已经尝试了以下办法,完全搞不定... 客户端出错的版本: spring-boot:2.0.3. ...
- 访问hbase的内部大致流程
hbase 访问表过程.Client(客户端)----->访问ZK(拿到meta表的region位置)----->访问meta 表的region------>拿到user表的regi ...
- StoryBoard拆分(Storyboard References)
https://www.jianshu.com/p/78dc76204c8e iOS UI篇10- Storyboard(Storyboard Reference) https://www.aliyu ...
- 跟我一起做一个vue的小项目(五)
接下来我们要做的是热门推荐页面,我们写一个推荐组件 使用的方法也是前端data中的数据渲染到页面上面,这里对文字过长取省略号的方法不成功使用了一个小技巧 使用了min-width:0 我们来看完整的代 ...
- LUOGU P1779 魔鬼杀手_NOI导刊2010提高(03)
传送门 解题思路 背包,首先先用aoe都打残然后单伤补刀,用f[i]表示AOE打了i的伤害的最小花费,g[i]表示单伤打了i的伤害的最小花费. 代码 #include<iostream> ...
- 用canvas 画出圆形图片
/** * 把图片处理成圆形,如果不是正方形就按最小边一半为半径处理 * @param {object} imgObj 图片(img)对象 * @param {number} imgType 设置生成 ...
- android的AIDL
一.AIDL的意义: AIDL全称是Android Interface Definition Language,是android接口定义语言.AIDL就是为了避免我们一遍遍的写一些 ...
- 转:Android检查设备是否联网
public static boolean isConnect(Context context) { ConnectivityManager connectionManager = (Connecti ...