在命令行中使用GCC的-E选项对上面的程序进行预编译: text ```bash gcc -E program.c -o program.i ``` 这将生成一个名为program.i的文件,其中包含了预编译后的结果。 观察预编译后的输出,确认宏是否被正确打印或替换: 打开program.i文件,你会看到宏MAX和SQUARE(5)已经被替换为了它们的值或代码片段: ...
其中,__FILE__、__LINE__、__FUNCTION__这三个宏是编译器内置宏定义,分别代表调试信息所在文件、...
再次查看报警信息,小二理解大概意思就是,C++11 要求宏定义与文字字符串之间,必须要有一个空格。 warning: invalid suffix on literal; C++11requires a space between literal and string macro [-Wliteral-suffix] 1. 第一次运行结果,截图如下: 3 TWO 基于第一次测试结果,同样使用 C++ ,在线编译。 本次测试 ...
在线编译器,使用的 C++ ,默认编译选项是这个样子: g++ -std=c++20 -O2 -Wall -pedantic -pthread main.cpp && ./a.out 然后又在本地,使用 VSCode 做了测试,编译选项是这个样子: gcc 'main.c' -o 'main.exe' -Wall -O2 -m64 -lm -static-libgcc -std=c11 -fexec-charset=GBK ; if ($?) { &...
C/C++宏的基本使用方法 宏是C/C++所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率PI,之后在代码中使用PI来代替具体圆周率的值。 确实如此,宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以...
编译型语言c是不能打印“预编译宏”的,代码在编译前的预编译步骤时,所有的宏都已经被数据代替。BBBBBB都被换成100000,再编译时已经看不到宏。编译后更只剩机器指令和数据。对于重复的常量,现代编译器通常会优化,自动归为一个数据。不需要从常量找宏 现代的IDE也会列出项目中可用的宏。找宏也简单...
嵌入式Linux C语言编程程序调试与宏定义-在Linux使用gcc编译程序的时候,对于调试的语句还具有一些特殊的语法。gcc编译的过程中,会生成一些宏,可以使用这些宏分别打印当前源文件的信息,主要内容是当前的文件、当前运行的函数和当前的程序行。
//注:由于第一个宏TRACE_CMH_1调用了两次printf,所以效率没有第二个宏高。 //如果编译器支持C99标准的话,可以用第二个宏。 intcount = 1; classCBase { public: CBase() { //打印当前行所在文件、行号、函数,以及其它信息。 TRACE_CMH_2("BASE: [%d]\n", count++); ...
C语言打印程序行号、日期方便调试程序 一、前言 平时开发C语言程序时,经常需要调试代码,C语言有一些宏,可以打印出当前的行号、文件名称、日期、时间,对程序的调试起到很大的帮助,可以快速定位问题。特别是开发单片机程序时,使用这些宏打印这些信息或者在LCD上显示程序的编译日期、时间,可以知道这个单片机上的固件是什么...
编译完成后执行 可以看到这次执行maintest就有输出内容了 再次关闭,只需将cmakelists作如下修改 然后重新执行cmake和编译,即可关闭。 如此,我们就实现了简单的通过cmake向源码文件传入开关宏来控制printf的开关 但这意味着每次开关都需要编辑cmakelists文件,麻烦了不止一点。我们可以通过以下方法实现在执行cmake时通过携...