淘宝网站如何做虚拟,电脑上不了建设厅网站,用vs代码做网站,秦皇岛网站制作方案欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab#xff0c;机器人运动控制、多机器人协作#xff0c;智能优化算法#xff0c;滤波估计、多传感器信息融合#xff0c;机器学习#xff0c;人工智能等相关领域的知识和… 欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab机器人运动控制、多机器人协作智能优化算法滤波估计、多传感器信息融合机器学习人工智能等相关领域的知识和技术。 预处理pragma 1. 预处理指令2. #pragma详细用法 专栏《精通C语言》 1. 预处理指令
ANSI标准定义的C语言预处理指令
预处理指令含义#define宏定义在预处理阶段进行文本替换。#undef撤销已定义的宏#include引入其他源文件#if #else #elif #endif#if 的一般含义是如果#if 后面的常量表达式为true则编译它与#endif 之间的代码否则跳过这些代码。命令#endif 标识一个#if 块的结束。#else命令的功能类似于C 语言中的else #else 建立另一选择分支和# if 搭配。#elif 命令意义与else if 相同它形成一个if else-if语句可进行多种编译选择分支。#ifdef #ifndef条件编译#ifdef表示如果已经定义了某个宏#ifndef表示如果没有定义某个宏。#line改变当前行数和文件名在编译程序中预先定义的标识符用法为#line number[“filename”]。#error编译程序时如果遇到#error则产生一个编译错误的提示消息并且会停止编译。#pragma指定编译器实现特定功能。比如#pragma once表示只包含一次头文件#pragma pack(1)指定字节对齐方式等等。
ANSI标准C定义的宏
__LINE__ //正在编译的文件的行号
__FILE__ //正在编译的文件的名字
__DATA__ //表示编译时刻的日期字符串
__TIME__ //表示编译时刻的时间字符串
__STDC__ //判断该文件是不是定义成标准C程序#include
#include提供文件包含的功能在预处理阶段完成它可以把多个源文件连接成一个源文件实际上#include是宏替换的一种延伸。使用#include包含文件主要有两种方式两种方式的区别在于搜索策略不同。 #include path/filename 在搜索时直接从编译器指定的路径进行搜索如果找到文件则把文件内容替换到#include语句处如果找不到则报错。一般系统提供的头文件使用尖括号包含。 #include “path/filename” 在搜索时首先从运行程序所在的目录处搜索如果搜索失败再从编译器指定的路径处搜索如果仍然搜索失败则报错。用户自定义的头文件必须用双引号包含。
#运算符
#也可以看作一种预处理指令用法如下
#include stdio.h
#include stdlib.h#define PRINT1(x) printf(square of x is %d\n, x * x)
#define PRINT2(x) printf(square of #x is %d\n, x * x)int main()
{PRINT1(3);PRINT2(3);return 0;
}编译运行可以看到输出结果如下
[mindtechnistlocalhost test]$ ./test
square of x is 9
square of 3 is 9##运算符
也叫做连接符用法如下
#define xNum(n) x##n xNum(7) //展开后为 x72. #pragma详细用法
#pragma 指令用于设定编译器的状态或者是指示编译器完成一些特定的动作。常用参数如下
#pragma message
在编译信息窗口输出相应信息用法为
#pragma message(消息文本)当编译器遇到这条指令就会在编译输出窗口打印我们定义的消息文本比如
#ifdef _X86
#pragma message(is _X86 ...)
#else
#pragma message(is _ARM ...)
#endif#pragma code_seg
一般用于设置程序中函数代码存放的代码段在开发驱动程序时使用较多。
#pragma code_seg([section-name, [section-class]])#pragma once
头文件只被编译一次。
#pragma hdrstop
表示预编译头文件到此为止后面的文件不再进行预编译。
#pragma resource
#pragma resource *.dfm表示把*.dfm文件中的资源加入项目。
#pragma warning
用法示例
#pragma warning(disable:4507 34) //不显示4507和34号警告信息
#pragma warning(once:4385) //4385号警告信息仅报告一次
#pragma warning(error:164) //把164号警告信息作为一个错误。#pragma comment 该指令将一个注释记录放入一个对象文件或可执行文件中。常用lib参数帮我们连入一个库文件。比如
#pragma comment(lib, user32.lib)该指令用来将user32.lib 库文件加入到本工程中。 linker参数将一个链接选项放入目标文件中,你可以使用这个指令来代替由命令行传入的或者在开发环境中设置的链接选项你可以指定/include 选项来强制包含某个对象例如:
#pragma comment(linker, /include:__mySymbol)#pragma pack
设置内存对齐方式。