预处理命令

【C/C++】复合类型(自定义类型)

杀马特。学长 韩版系。学妹 提交于 2019-11-29 00:50:57
gcc编译器 gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,gcc同样适用于微软的Windows。 gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、Object C++、Go语言的编译器大家族。 编译命令格式: gcc [-option1] ... <filename> g++ [-option1] ... <filename> 1 2 命令、选项和源文件之间使用空格分隔 一行命令中可以有零个、一个或多个选项 文件名可以包含文件的绝对路径,也可以使用相对路径 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe gcc、g++编译常用选项说明: 选项 含义 -o file 指定生成的输出文件名为file -E 只进行预处理 -S(大写) 只进行预处理和编译 -c(小写) 只进行预处理、编译和汇编 C语言是不跨平台的,用Java用习惯的我突然回到C,有点不适应,用SpringBoot完成的Java项目,打成jar包

预处理和宏定义

♀尐吖头ヾ 提交于 2019-11-27 21:30:34
预处理命令行必须位于源文件的开头 在源文件的一行上可以有多条预处理命令 宏名必须用大写字母表示 宏替换不占用程序运行时间 解析: D A:预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。 B:源文件的每一行只能有一条预处理命令,如果指令一行放不下, 可以通过反斜杠“/”进行控制。 C:宏名通常由大写字母表示,而非必须 D:宏是在 预编译期间 进行的,将代码中的指定字符转换,转换结束后,再进行编译,所以不占用程序运行时间 来源: https://blog.csdn.net/sinat_42550851/article/details/99736252

【转】GCC编译过程

本小妞迷上赌 提交于 2019-11-27 13:26:05
gcc 编译过程 从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i、 hello.s、 hello.o,最后才得到 hello(或 a.out)文件,分别对应着预处理、编译、汇编和链接 4 个步骤,整个过程如图 10.5 所示。 这 4 步大致的工作内容如下: (1) 预处理, C 编译器对各种预处理命令进行处理,包括头文件包含、宏定义的扩 展、条件编译的选择等; (2) 编译,将预处理得到的源代码文件,进行“翻译转换”,产生出机器语言的目标 程序,得到机器语言的汇编文件; (3) 汇编,将汇编代码翻译成了机器码,但是还不可以运行; (4) 链接,处理可重定位文件,把各种符号引用和符号定义转换成为可执行文件中 的合适信息,通常是虚拟地址。 下面根据 hello.c 这个示例,跟踪一下其中的细节。 ( 1 )预处理 在 gcc 命令加上-E 参数,可以得到预处理文件。输入下列命令: vmuser@Linux-host:hello$ gcc -E hello.c –o hello.i 将会产生 hello.i 文件,这就是 hello.c 经过预处理后的文件。实际操作结果见图 10.6。 图 10.6 预编译得到 hello.i 文件 一个原本连同空行才 8 行的代码,经过预处理,得到了一个 800 多行的预处理文件,文 件开的内容如图 10.7

C# #IF, #ELSE和#ENDIF预处理指令

假如想象 提交于 2019-11-27 04:42:48
#if 使您可以开始条件指令,测试一个或多个符号以查看它们是否计算为 true 。如果它们的计算结果确实为 true ,则编译器将计算位于 #if 与最近的 #endif 指令之间的所有代码。例如, 1 #if DEBUG 2 string file = root + "/conf_debug.xml"; 3 #else 4 string file = root + "/conf.xml"; 5 #endif 这段代码会像往常那样编译,但 读取debug配置文件包含在 #if子句内。这行代码只有在前面的 #define命令定义了符号 DEBUG后才执行。当编译器遇到 #if语句后,将先检查相关的符号是否存在,如果符号存在,就只编译 #if块中的代码。否则,编译器会忽略所有的代码,直到遇到匹配的 #endif指令为止。一般是在调试时定义符号 DEBUG,把不同的调试相关代码放在 #if子句中。在完成了调试后,就把 #define语句注释掉,所有的调试代码会奇迹般地消失,可执行文件也会变小,最终用户不会被这些调试信息弄糊涂 (显然,要做更多的测试,确保代码在没有定义 DEBUG的情况下也能工作 )。这项技术在 C和 C++编程中非常普通,称为条件编译 (conditional compilation)。 // preprocessor_if.cs #define DEBUG

键盘输入工作原理

做~自己de王妃 提交于 2019-11-26 15:43:02
Windows 窗体编程 键盘输入工作原理 Windows 窗体通过引发键盘事件来处理键盘输入以响应 Windows 消息。大多数 Windows 窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入。但是,必须了解键盘消息的工作方式,才能实现更高级的键盘输入方案(如在按键到达控件之前截获它们)。本主题描述 Windows 窗体能够识别的按键数据的类型,并概述键盘消息的传送方式。有关键盘事件的信息,请参见 使用键盘事件 。 按键的类型 Windows 窗体将键盘输入标识为由按位 Keys 枚举表示的虚拟键代码。使用 Keys 枚举,可以综合一系列按键以生成单个值。这些值与 WM_KEYDOWN 和 WM_SYSKEYDOWN Windows 消息所伴随的值相对应。可通过处理 KeyDown 或 KeyUp 事件来检测大多数物理按键操作。字符键是 Keys 枚举的子集,它们与 WM_CHAR 和 WM_SYSCHAR Windows 消息所伴随的值相对应。如果通过组合按键得到一个字符,则可以通过处理 KeyPress 事件来检测该字符。或者,可以使用由 Visual Basic 编程接口公开的 Keyboard 来发现已按下的键并发送它们。有关更多信息,请参见 访问键盘 。 键盘事件的顺序 正如上面列出的那样,在一个控件上可能出现三个与键盘相关的事件