在Windows中编写和编译C / C ++程序的最快方法

问题描述 投票:18回答:11

我通常使用Visual Studio,但是当我很快想测试一些代码时,有几件事困扰我:

  • 启动时间相当长
  • 它总是需要一个项目来执行/调试文件
  • 程序输出输出到控制台,但是当我不在程序中插入getchar()或断点,因此看不到它时,窗口只是关闭了。

我正在寻找适合Windows中非常快速编程的程序。例如,从SO问题中复制一些代码,运行它并查看其输出。

我认为CygWin下的控制台程序或g ++不是一个好的解决方案,因为将cd存入正确的目录需要很长时间才能保存文件,我不习惯Vim之类的编辑器并输入在编译器命令行中,我一直很烦我,等等。

所以我想我要找的是一个非常轻量级的免费C / C ++ IDE,它已预先配置为可与免费编译器一起使用(如果附带它,则有加分。)

您能推荐哪些条件至少满足上述列表中的两项?

甚至可能还有一个程序可以在交互式命令行(如Python)中执行/解释C或C ++?

c++ c ide interactive
11个回答
8
投票

我正在寻找适合真的非常快的程序在Windows中编程。例如,从SO问题中复制一些代码并执行它并查看其输出。

对于快速而肮脏的实验编码,我真的很喜欢codepad.org。不必创建文件特别好,因为它使我免于提出合适的名称和磁盘位置。请注意,它使用g ++ 4.1.2 behind the scenes,因此不支持某些最新的C ++ 11功能。


0
投票

首先,您的期望不合理。从最简单到最复杂的输入范围,任何程序都无法猜测您想要什么。如果进入cygwin太困难了,并且启动Visual Studio太耗时,那么您就很敬酒了。抱歉。

就是说,您可以使用记事本(您可以在命令行中将其作为记事本foo.cpp调用)来编辑代码。记事本使用您的鼠标和PC上的箭头键,因此非常直观。

您可以从命令行使用Visual Studio工具,而无需摆弄项目文件。

Visual Studio附带了一个名为nmake的工具,其最基本的用法类似于linux make。如果输入非常简单,则nmake的默认规则可能足以生成可执行文件。如果没有,您也许能够构造一个将接受任何单个简单文件(例如foo.cpp)的makefile,并将其编译并链接到名为foo.exe的可执行文件。您仍然必须学习使用nmake,有些人认为这很容易,而其他人则认为非常困难。尝试nmake foo.cpp,看看结果是否是您想要的。


0
投票

快速测试一些代码所需的条件:

  1. 当然是编译器套件
  2. 允许配置工具命令的编辑器
  3. 一个控制台帮助程序,可在程序结束时阻止控制台窗口立即关闭
  4. 将以上各项结合在一起的正确配置

让我们详细介绍:

  1. 一个编译器套件。

    TDM-GCC是一个很好的选择,因为它的行为比MinGW GCC更“ Windows友好”。 (有关更多信息,请参见here。但是,对于除标准C库之外没有其他依赖关系的C程序,TinyCC在GCC上可能是更好的选择,因为它可以运行c程序而不会产生.exe文件。

    ] >
  2. 允许配置工具命令的编辑器。

  3. SciTE是轻量级的源代码编辑器,具有语法突出显示功能。它的.properties文件定义了许多配置选项,并且可以通过lua脚本进行扩展。 download page提供了名为Sc1.exe的静态构建的单文件可执行文件下载。

  4. 一个控制台帮助程序,可在程序结束时阻止控制台窗口立即关闭。

  5. 这可以通过编写批处理文件来完成,如下所示:

    :: console_helper.bat: hold the console window after the program exits
    :: usage: console_helper.bat my_program.exe
    @echo off
    %*
    echo:
    :: The next line is optional
    echo -----Program Ended. Exit Code: %errorlevel%
    pause
    echo on
    
  1. 将以上内容组合在一起的正确配置。

    创建文件夹(例如c_test_code),然后将Sc1.execonsole_helper.bat放入其中。并在同一文件夹中复制已安装的TDM-GCC,以便目录树如下所示:

  2. c_test_code
    │   console_helper.bat
    │   Sc1.exe
    │   SciTEGlobal.properties
    │   
    └───TDM-GCC-64
        │   ..........
        ├───bin
        │       addr2line.exe
        │       .............
        ├───gdb64
        .............
    

现在打开Sc1.exe并选择菜单Options -> Open Global Option File。这将打开一个名为SciTEGlobal.properties的文件。将以下内容放入其中:

# SciTEGlobal.properties

mingw.bin.dir=$(SciteDefaultHome)\TDM-GCC-64\bin

command.compile.*.c="$(mingw.bin.dir)\gcc.exe" "$(FilePath)" -o "$(FileDir)\$(FileName).exe"
command.go.*.c="$(SciteDefaultHome)\console_helper.bat" "$(FileDir)\$(FileName).exe"
# Setting the subsystem to 2 is necessary, otherwise all output will be redirected to scite's output window whose interaction support is poor
command.go.subsystem.*.c=2
command.go.needs.*.c=$(command.compile.*.c)


command.compile.*.cpp="$(mingw.bin.dir)\g++.exe" "$(FilePath)" -o "$(FileDir)\$(FileName).exe"
command.go.*.cpp="$(SciteDefaultHome)\console_helper.bat" "$(FileDir)\$(FileName).exe"
command.go.subsystem.*.cpp=2
command.go.needs.*.cpp=$(command.compile.*.cpp)


# if your program is Win32-GUI-based rather than console-based, you may want to try the next two command instead:
command.name.1.*.c=Compile-GUI
command.1.*.c="$(mingw.bin.dir)\gcc.exe" -mwindows "$(FilePath)" -o "$(FileDir)\$(FileName).exe" -lkernel32 -luser32 -lgdi32

command.name.2.*.c=Run-GUI
command.2.*.c="$(FileDir)\$(FileName).exe"
command.subsystem.2.*.c=1

command.name.1.*.cpp=Compile-GUI
command.1.*.cpp="$(mingw.bin.dir)\g++.exe" -mwindows "$(FilePath)" -o "$(FileDir)\$(FileName).exe" -lkernel32 -luser32 -lgdi32

command.name.2.*.cpp=Run-GUI
command.2.*.cpp="$(FileDir)\$(FileName).exe"
command.subsystem.2.*.cpp=1


# if your program does not wait for keyboard input (i.e. no scanf() or cin>> call), you may want to send its output to scite's output window
# and thus eliminate the need of a console helper.
command.name.3.*.c=Run-NoInput
command.3.*.c="$(FileDir)\$(FileName).exe"

command.name.3.*.cpp=Run-NoInput
command.3.*.cpp="$(FileDir)\$(FileName).exe"


# make the font size of output larger to differentiate it from command echoes
style.errorlist.32=size:12
style.errorlist.4=fore:#0000FF,size:8

有关SciTE配置的更多信息,请参见SciTE Documentation Page

现在完成工作。当您看到自己感兴趣的一段代码时,启动Sc1.exe(超级快!)。复制并粘贴代码。 Ctrl + F7进行编译。 F5运行。如果它是基于GUI的,请按Ctrl + 1进行编译。 Ctrl + 2作为GUI运行。 Ctrl + 3将输出重定向到SciTE的输出窗格。享受。

此外,此环境是便携式

。您只需将整个c_test_code文件夹复制到USB记忆棒即可在任何Windows PC上使用。

4
投票

“真的,真的很快(又脏又丢掉?)编程”?

  • 编译器:VC ++命令行-您已经拥有它。
  • 编辑器:记事本或类似工具
  • 编译过程:您写入一次的.BAT文件并提供带有单个源文件名称的参数。
  • 位置:为您的已知目录设置一些桌面快捷方式测试代码。

3
投票

使用TCC : Tiny C Compiler

  1. 启动命令提示符
  2. cd随处可见
  3. notepad main.c
  4. 在记事本中编写代码。保存
  5. 返回命令提示符键入tcc -run main.c
  6. 注意错误,返回4

注意,使用-run参数,您就像在解释器一样调用tcc


3
投票

您使用的编译器并不重要。我更喜欢G ++,但[Visual Studio中的cl.exe也同样有效。

为了从命令行快速使用编译器,也可以

  1. setting it in the system settings将其包含到您的PATH变量中,或
  2. 创建一个简单的.cmd脚本,该脚本将启动包含正确路径的控制台。

Visual Studio附带附带这样的.cmd脚本,该脚本链接到Visual Studio的“开始菜单”条目中。不过,就我个人而言,我更喜欢调整PATH变量。

然后,您可以简单地从命令行中的任何目录调用编译器。如果您懒于编写整个命令行,请创建一个脚本来帮您完成。或使用Cygwin和(C)Make。

另外两句话:

  1. [使用构建配置(Cntr + F5(?))启动项目,使程序运行后无需打开控制台,而不必包含getch()调用或类似内容。
  2. 我强烈建议您学习诸如Emacs或Vim之类的编辑器,除非您计划永远不要使用Windows以外的任何其他平台。这些编辑器非常强大,并且在某些方面比Visual Studio代码编辑器所提供的功能快了几年。

    但是如果您确实没有时间,请使用像Notepad++这样的体面的文本编辑器。


2
投票

[Open Watcom易于安装和使用,速度快,并且是最接近MSVC ++的编译器,尽管它在功能(尤其是在C ++中)方面明显落后。

我已经不习惯使用它的IDE,因为我已经习惯了在控制台中完成大多数工作,但是它在那里,调试器也在那里。

编译一个文件管理器很容易。

编译C代码:

wcl386.exe /we /wx /q sourcefile.c

编译C ++代码:

wcl386.exe /xs /we /wx /q sourcefile.cpp

2
投票

在我的机器上,我有一个名为“ Test”的“空”项目。当我想在互联网上测试一些随机代码时,只需将其放入该项目的main.cpp中并进行编译。

如果您认为MSVC加载时间太长,应该可以编写一个批处理脚本来尝试编译项目并将生成日志放入文件中。然后,您可以使用记事本简单地更改现有的main.cpp,双击批处理文件,然后弹出打开构建日志或运行可执行文件。

[编辑]我制作了一个批处理文件来编译整个解决方案。原来,这需要加载Visual Studio。但是,批处理文件可以很容易地编译/运行单个cpp文件。


1
投票

我最喜欢的IDE:http://www.codeblocks.org/

这里是包含MinGW编译器的直接下载链接:http://download2.berlios.de/codeblocks/codeblocks-10.05mingw-setup.exe

您将找不到任何(好的)C / C ++解释器。


1
投票

[一旦使用PSPad将C ++文件的“ compiler”选项设置为合理的默认值(正确目录中的cl.exe,速度优化,所有警告)。然后就是Ctrl + F9。


0
投票

以上所有编译器建议都不错。对于编辑,我真的很喜欢Notepad2

我知道你没问...

© www.soinside.com 2019 - 2024. All rights reserved.