当前位置: 首页 > news >正文

网站被攻击的方法班级网站建设方案

网站被攻击的方法,班级网站建设方案,wordpress转微信小程序,做二手房的网站技巧文章目录 前言预处理器#define预处理条件编译#ifdef#ifndef#if、#elif、#else 和 #endif #和##运算符 预定义宏 前言 预处理器 预处理器是指一些指示编译器在实际编译之前所需要完成的指令。 预处理器负责处理以**井号#xff08;##xff09;**开头的预处理指令#xff0… 文章目录 前言预处理器#define预处理条件编译#ifdef#ifndef#if、#elif、#else 和 #endif #和##运算符 预定义宏 前言 预处理器 预处理器是指一些指示编译器在实际编译之前所需要完成的指令。 预处理器负责处理以**井号#**开头的预处理指令这些指令在编译过程之前对源代码进行一些文本替换和操作。 例如#include iostream除此之外还有#define、#if、#else、#line 等 #define预处理 #define 用于定义宏将一个标识符替换为特定的文本。宏在代码中可以起到类似函数的作用但是是在编译时进行文本替换的。 #define PI 3.14159示例 #include iostream// 定义常量 PI #define PI 3.14159int main() {// 使用定义的常量 PIdouble radius 5.0;double area PI * radius * radius;// 输出计算结果std::cout 半径为 radius 的圆的面积是: area std::endl;return 0; } 在上述中用了#define PI 3.14159 这样预处理器会将所有出现的PI替换成3.14159实际上编译器处理的代码应该是 double area 3.4159 * radius * radius;除了用#define定义常量的宏之外还可以定义带有参数的宏 如 #include iostream// 定义带参数的宏 #define MAX(x, y) ((x) (y) ? (x) : (y))int main() {int a 10, b 7;// 使用定义的宏int result MAX(a, b);// 输出计算结果std::cout 较大的数是: result std::endl;return 0; } 在实际编译时预处理器会将所有的MAX(a, b)替换为((a) (b) ? (a) : (b))从而实现参数的替换和宏的展开。 条件编译 条件编译 使用#if、#ifdef、#ifndef、#elif、#else和#endif等指令来根据条件选择性地包含或排除代码块。 #ifdef #ifdef 是一个预处理器指令用于在编译时检查一个标识符是否已经被定义。如果指定的标识符已经定义则预处理器会包含后续的代码块否则会忽略这个代码块。 使用示例 #include iostream// 定义一个标识符 #define DEBUG_MODEint main() {// 检查标识符是否已经定义#ifdef DEBUG_MODEstd::cout Debug mode is enabled. std::endl;#elsestd::cout Debug mode is disabled. std::endl;#endifreturn 0; } 在上述中使用了#define DEBUG_MODE 预定义了一个标识符后面在main函数中通过#ifdef DEBUG_MODE来检查。如果存在就会打印Debug mode is enabled. 上述运行结果 如果我们将#define DEBUG_MODE注释掉就会有 #ifndef 这个和#ifdef正好是相反的结果即如果给定的标识符尚未被定义则包括代码块。 #if、#elif、#else 和 #endif 这些预处理器指令允许根据条件选择性地包括或排除代码块。 示例 #include iostream#define DEBUG_LEVEL 2int main() {#if DEBUG_LEVEL 0std::cout No debugging. std::endl;#elif DEBUG_LEVEL 1std::cout Basic debugging. std::endl;#elif DEBUG_LEVEL 2std::cout Advanced debugging. std::endl;#elsestd::cout Unknown debugging level. std::endl;#endifreturn 0; } #和##运算符 #和 ## 是两个特殊的运算符用于在宏定义中进行字符串化和连接操作。 #运算符字符串化操作符 在宏定义中# 运算符可以将参数转换为字符串常量。在宏的定义中将参数用 # 运算符括起来预处理器会将参数的文本形式转换为字符串。 示例 #define STRINGIZE(x) #xint main() {int value 42;const char* str STRINGIZE(value);// 在这里str 的值为 valuereturn 0; } STRINGIZE(value) 会被替换为 “value”因为 #x 将参数 x 转换为字符串。 ##运算符连接操作符 在宏定义中## 运算符用于将两个标识符连接在一起形成一个新的标识符。 #define CONCAT(a, b) a##bint main() {int xy 42;// 在这里CONCAT(x, y) 会被替换为 xyreturn 0; } 在上述代码中CONCAT(x, y) 会被替换为 xy因为 a##b 将两个参数 a 和 b 连接在一起。 预定义宏 C 中有一些预定义的宏它们由编译器提供并可在程序中直接使用。这些宏通常用于提供有关编译环境和代码特性的信息。 例如 __cplusplus 这个宏用于指示 C 的版本。如果程序是在 C 编译器中编译的__cplusplus 的值会被设置为一个表示 C 版本的整数。FILE 这个宏会被替换为当前源文件的文件名。LINE 这个宏会被替换为当前源文件中的行号。func 或 FUNCTION 这个宏会被替换为当前函数的名称。DATE 和 TIME 这两个宏会被替换为程序被编译时的日期和时间。 简短的示例 #include iostream using namespace std;int main () {cout Value of __LINE__ : __LINE__ endl;cout Value of __FILE__ : __FILE__ endl;cout Value of __DATE__ : __DATE__ endl;cout Value of __TIME__ : __TIME__ endl;return 0; }编译和运行后结果 Value of __LINE__ : 6 Value of __FILE__ : test.cpp Value of __DATE__ : Feb 28 2011 Value of __TIME__ : 18:52:48
http://wiki.neutronadmin.com/news/287998/

相关文章:

  • 企信查官网旺道seo推广系统怎么收费
  • 河源建设局网站罗泾网站建设
  • 网站无后台添加后台东莞小程序开发解决方案
  • 天津企业网站建设哪家好做网站的大骗子
  • 网站正在建设中 图片网站建设便宜
  • 许昌市做网站wordpress固定链接+404
  • tomcat做网站属于什么公装设计网站
  • 机关网站建设费入什么科目最便宜的货源网站大全
  • 新电商网站网站建设公司问候语
  • 东莞贸易公司寮步网站建设价格厂房装修东莞网站建设
  • 专业手机网站建设价格明细表西安建设工程交易中心
  • 建设银行境外汇款申请书网站手机网站开发 和 网页
  • 做网站运用的软件网站设计中的用户体验
  • 云阳一平米网站建设怎么做货物收发的网站
  • 小型购物网站开发怎么制作自己的免费网站
  • 友情链接网站源码怎样建自己的网站赚钱
  • 建立网站就是制作网页邯郸市教育公共服务平台
  • 软件公司门户网站模板好网站推荐
  • 沈阳个人网站建设重庆汽车网站建设
  • 武侯区网站建设100种禁用的视频软件不要钱
  • 建立网站的工具wordpress cms plugin
  • 做网站知识wordpress 前台
  • 有网络网站打不开商务网站建设与管理
  • 企业网站一般用什么域名如何外贸网站推广
  • 做网站公司logo网络广告效果评估
  • 淄博网站设计策划方案维护wordpress评论翻页
  • 网站开发一般用哪些语言建设工程公司名字大全三个字
  • 莲花网站企业营销策划
  • dede网站迁移步骤做教程网站资源放哪里
  • 漳州建设局网站龙华营销型网站