草庐IT

C++标准

全部标签

C - 在控制台应用程序中更改单个单词的文本颜色?

我正在为学校做一个项目,我希望能够以黄色文本显示用户返还给他们的钱,以便于阅读。到目前为止,我已经找到了一种使用为整个窗口执行此操作的方法system("COLOR06");但这不是我想要的。我在Windows的控制台应用程序中运行,所以一些颜色会很好地使它达到标准。这可以用C语言实现吗? 最佳答案 无需调用系统命令,假设您只处理Windows应用程序,您可以使用以下命令:HANDLEhStdOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hStdOut,(FO

c++ - 在 Windows 上等待进程或标准输出

我正在使用CreateProcess启动一个进程,我想等待该进程完成,或者等待任何内容写入标准输出,该标准输出正在通过匿名管道进行传输。下面的代码不起作用,因为WaitForMultipleObjects不断返回stdout管道,即使没有任何内容可读。有没有办法等待管道?我等不及要阅读了,因为如果流程完成,我还需要继续。我也不能等到过程完成而不检查管道,因为它可能会溢出。有什么想法吗?if(::CreateProcess((!application_name.empty()?application_name.c_str():NULL),//Application/Executablen

windows - 批处理脚本中的非标准文件描述符

所以我有(我认为是)一个有趣的问题。在工作中,我使用专有命令行实用程序测试/配置我们制作的以太网设备。基本上,您打开命令提示符,在相应目录中键入ethutil,然后它通过JTAG访问芯片。在此实用程序中,您可以运行“脚本”,这些脚本只是填充了适当命令的文本文件。它们是这样运行的:-->runtest_script.txt然后这将吐出对脚本中所有命令的反馈。我已经开始通过使用批处理文件将命令管道化到实用程序来自动执行大量寄存器写入/读取操作,如下所示:typeruntest_script.txt|ethutil>nulnul只是为了抑制我的批处理读数中的所有输出。这工作得很好,但我总是收

c - 如何使这个 1996 年的 makefile 起作用?

这是1996年旧GSM标准的make文件。我需要让它在运行OSX10.11.6的MacBook或Windows7的大学计算机上运行。Windows没有安装nmake在谷歌搜索之后,这个问题似乎是一个解决方案。有没有办法绕过makefile的使用?此外,将CDIR和UTILSDIR更改为完整路径在我的Mac上还不够。make-fmakefile.mak仍然返回TCC-A-I/Users/Henrik/Desktop/GSMHR2/DISK/c-Fc-ml-c/Users/Henrik/Desktop/GSMHR2/DISK/c/gsm_hr.cmake:TCC:Nosuchfileord

c++ - 如何判断 stderr 是否已在 Windows 中重定向?

我希望我的程序在stderr连接到控制台时和重定向到文件/管道时具有不同的行为。在Unix系统中,我可以只测试isatty(STDERR_FILENO),但我如何在Windows中执行此操作?MSVCRT也有一个名为_isatty的函数,它不能正常运行(例如DetectNULfiledescriptor(isattyisbogus))。我可以调用任何Windows或NTAPI来测试它吗? 最佳答案 调用GetStdHandle获取标准错误句柄。将该句柄传递给GetFileType以找出它是什么类型的文件。如果返回FILE_TYPE_

C fopen 到特定目录

所以我正在尝试创建一个程序,该程序将根据系统是Windows还是Linux更改fopen()函数的文件目录。在我的主要功能中,我通过确定操作系统#ifdef__unixprintf("linuxmachine\n");windows=false;linux=true;#endif#ifdef_WIN32printf("windowsmachine\n");windows=true;linux=false;#endif然后在我打开文件的函数中FILE*fp,*fpo;if((windows==true)&&(linux==false)){fp=fopen("/temp/coursein/

c - 是否可以在 MS Windows 上编译 C89 代码?

我正在尝试使用一些遗留的C89代码,但在构建它时遇到了问题。我通常的环境是VisualStudio,但它似乎只支持C99,并且一些C99功能(例如stdio等不一定是常量)会破坏代码-很多。在我开始篡改代码之前,我想编写一些测试,这样我就不会破坏旧的行为,但是我无法测试测试,可以这么说,在我可以构建代码之前。那么还有什么方法可以在Windows上编译C89代码吗?编辑:SteveSummit已经确定stdio等从未得到保证;它只是我的遗留代码恰好以一种相当深入嵌入的方式依赖的某些编译器的一个特性。所以我的问题转移到是否有任何支持该假设的WindowsC编译器可用(最好是免费的!)。或者

自定义工具提示格式

我在Windows上使用普通的旧原生C语言工作。没有其他平台,没有C++。(是的,我是一只恐龙。)我试图找到一个我认为是“所有者绘制工具提示控件”的示例,但它似乎不存在。至少不是标准的Windows工具提示控件。我试图搜索实现自定义工具提示控件的库或源代码,但我所能找到的只是在.NET中扩展控件的东西(或在我工作以外的其他环境中。)我希望为工具提示窗口中的文本支持Markdown(或类似的东西)。大多数情况下,我想清楚地区分标题和内容,并对内容进行一些有限的格式设置(主要是粗体、斜体、颜色和分栏。)我不希望这里有完整的解决方案,我只是希望其他人已经找到了解决方案,并且可以指出他们找到它

java - ntdll.dll 是 Windows XP 和 Windows Vista 的标准配置吗?

ntdll.dll是WindowsXP和WindowsVista的标准配置吗?我知道我的WindowsXP机器上有它,但我不确定这是否是每台机器的标准配置。我很好奇的原因是NTQuerySystemInformation函数可以获取windowsXP和/或WindowsVista系统的CPU使用率。 最佳答案 是的,但是您要使用的函数不会可能不会。根据MSDN,NTQuerySystemInformation在未来的Windows版本中可能会被更改或不可用。你应该使用GetSystemInfo相反,它位于Kernel32.dll中,

java - 两个程序之间的输入输出通信

我有一个名为kgsgtp.jar的第三方java程序,它需要与我自己的C++(但主要是C)程序通信。java程序的文档指出:=====================你只需要确保它连接到的kgsGtp的标准输入kgsGtp的引擎输出和标准输出连接到引擎的输入。通常,最简单的方法是fork和execing来自您的引擎的kgsGtp。=====================现在我是一个相当称职的程序员,我觉得只要再提供一些线索,我就可以安排所有这些。我怀疑如果描述扩展到erm,10?行而不是三行半,然后我会立即对其进行排序。我猜文档中的fork是指在我的程序中使用WinExec()或Cr