C语言的一些特殊使用方法————————【Badboy】

一:特殊的字符串宏

  [cpp]

  #define A(x) T_##x

  #define B(x) #@x

  #define C(x) #x

  我们如果x=1, 则上面的宏定义会被解释成下面的样子

  A(1)------>T_1

  B(1)------>‘1‘

  C(1)------>"1"

  这些主要用于一些字符串处理函数和參数命名上,并不复杂,只是知者甚少

  二:屏蔽无用參数警告

  [cpp]

  #define UNUSED_PARAM(p) ((void)p)

  这个用来屏蔽无效參数的

  比方

  [cpp] view plaincopy

  void a(int x1, int x2)

  {

  // do nothing

  }

  这样会弹出警告。x1,x2是无效的參数

  可是,写成这样,就没关系了

  [cpp]

  void a(int x1, int x2)

  {

  UNUSED_PARAM(x1);

  UNUSED_PARAM(x2);

  }

  三: 想不出来了,占位。等睡醒了在想

  宏的更常见使用方法我就不写了,比方头文件的保卫宏。版本号定义宏。灵活使用确实事半功倍。

时间: 2025-01-07 21:17:59

C语言的一些特殊使用方法————————【Badboy】的相关文章

C语言free函数的原理——————————【Badboy】

今天在网上看到了这样一个问题,"如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉."这个问题,以前的确没有仔细想过. 当然,我觉得是肯定会释放掉的,但是一直没有了解过free 的原理,不敢乱说.我看了一下操作系统的内存管理,基本上是这样的,当然各个系统的实现不一样. 操作系统管理内存,维护了一个空闲内存链表,malloc从个链表中选出一个来使用,每个内存块都有一个头部来表示这个内存的基本信息,如内存大小, 所以free 时候 能够记

C语言free函数的原理————【Badboy】

今天在网上看到了这样一个问题,"如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉."这个问题,以前的确没有仔细想过. 当然,我觉得是肯定会释放掉的,但是一直没有了解过free 的原理,不敢乱说.我看了一下操作系统的内存管理,基本上是这样的,当然各个系统的实现不一样. 操作系统管理内存,维护了一个空闲内存链表,malloc从个链表中选出一个来使用,每个内存块都有一个头部来表示这个内存的基本信息,如内存大小, 所以free 时候 能够记

C语言循环中减少判断——————【Badboy】

为了让编译器更好地优化循环,应该尽量让循环中减少判断,方法之一是将判断语句整合进表达式.还是这个例子: for (int i = 0; i < 1000*10; i++) { sum += data[i/1000][i%10]; } 假如我们需要加一个判断,只有非负整数才需要作求和运算: for (int i = 0; i < 1000*10; i++) { if (data[i/1000][i%10] >= 0) sum += data[i/1000][i%10]; } 下面将这个判断

Swift语言中的属性,方法,下标脚本以及继承

从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并不是太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于很好的应用Swift语言将会有比较大的帮助. 属性 存储属性 存储属性通常是那些可以通过直接赋值,或者直接访问成员能够获得的属性类型. 它有些要注意的地方: 若一个结构体被声明为常量,则子属性无法被修改了.在Objective-C中,我们总是无法修改结构体的子属性,但是swift却可以,不过这种情况是个例外,当你存储型属性是个结构体并且是个常量,那你就不要再

c语言的宏的使用方法(转自他人)

C语言宏定义技巧 周四, 2008年 10月 09日 14:10 高级管理员 C/C++编程 - C语言基础   1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */typedef  unsigned

C语言遍历文件和目录——————【Badboy】

[cpp] #include #include #include #include #include #include #include #define MAX_PATH_LENGTH 512 #define MAX_FILE_EXTENSION 9 unsigned long visit_dirs = 0; unsigned long visit_files = 0; void listdir(char *path){ DIR *ptr_dir; struct dirent *dir_entr

《一种策略融合的跨语言文本情感倾向判别方法》论文学习笔记(大一下)

现象:因特网资源呈现多语言化和跨语言的特点,给普通用户获取非母语网络信息造成障碍. 目标:整合多语言倾向信息,以通用的数据形式让用户了解多语言数据对某个对象的评价. 针对跨语言情感倾向分类任务,提出两种跨语言情感倾向分析策略: 半监督框架的跨言情感倾向判别方法(双语协同文本情感倾向判别框架) 关键:跨语言一致文本 材料:源语言数据集和目标语言数据集 目标:利用源语言数据集的情感倾向标签,预测目标语言数据集中未标注样本点的情感倾向标签,即学习跨语言函数. 方法:将情感倾向一致样本点作为载体,采用半

C语言写俄罗斯方块源码——————【Badboy】

#include <graphics.h> #include <stdio.h> #include <stdlib.h> char x,y,ty,ty1,zhuan,line1=0,line2=0,ss[16],hol[10][29]={0},a[4][2]={0}; int score1=0,speed=1000; void unit(char,char,char);           void dl(int); void block(char);        

C语言的一些特殊用法————————【Badboy】

一:特殊的字符串宏 [cpp] #define A(x) T_##x #define B(x) #@x #define C(x) #x 我们假设x=1, 则上面的宏定义会被解释成以下的样子 A(1)------>T_1 B(1)------>'1' C(1)------>"1" 这些主要用于一些字符串处理函数和参数命名上,并不复杂,不过知者甚少 二:屏蔽无用参数警告 [cpp] #define UNUSED_PARAM(p) ((void)p) 这个用来屏蔽无效参数的

对C语言进行调试的最好方法是什么?

要了解调试程序的最好方法,首先要分析一下调试过程的三个要素: 应该用什么工具调试一个程序? 用什么办法才能找出程序中的错误? 怎样才能从一开始就避免错误? 应该用什么工具调试一个程序? 有经验的程序员会使用许多工具来帮助调试程序,包括一组调试程序和一些"lint”程序,当然,编译程序本身也是一种调试工具. 在检查程序中的逻辑错误时,调试程序是特别有用的,因此许多程序员都把调试程序作为基本的调试工具.一般来说,调试程序能帮助程序员完成以下工作: (1)观察程序的运行情况 仅这项功能就使一个典型的调