#include <stdio.h>
 #define MAN(x) "n"##x
 int main(void)
 {
     printf("%s",MAN("dd"));
     ;
 }

这里我说一下,几个我曾犯的错误,首先,将#define错写成了#include

报错error C2006: #include expected a filename, found 'identifier'

当我搜索时发现了这么别人问的一个问题

#include "asclass.h"
//asclass.h有语句#define ASData_i "asdata.h"
#include  ASData_i

这样编译,报错:error C2006: #include expected a filename, found 'identifier'

怎么处理?

因为#define 和#include都是预处理。所以不会在#include处发生替换,所以编译器误认为你在添加头文件

还有,当你在处理替换字的类型时要注意,就像上面的"n"##x,如果你去掉“”,那么他就会将n当成是个变量

指令             用途

#            空指令,无任何效果

#include    包含一个源代码文件

#define     定义宏

#undef     取消已定义的宏

#if          如果给定条件为真,则编译下面代码

#ifdef       如果宏已经定义,则编译下面代码

#ifndef     如果宏没有定义,则编译下面代码

#elif         如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif      结束一个#if……#else条件编译块

#error      停止编译并显示错误信息

    #else       略

   #error     指令将使编译器显示一条错误信息,然后停止编译。

         #line        指令可以改变编译器用来指出警告和错误信息的文件号和行号。
         #pragma  指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。

#pragma message(“消息文本”)

  当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。

 

条件预处理

#if defined x
等于
    #ifdef x

#if !defined x
等于
    #ifndef x

更详细的可以看http://www.cnblogs.com/mmfzmd517528/archive/2013/01/23/2872423.html

unknown character '0xa1'可能是在复制粘贴时,全角半角的错误

atexit()

#include<stdlib.h>
     int atexit(void(*func)(void));
 
    其中,atexit的参数是一个函数地址,当调用此函数时无须传递任何参数,该函数也不能返回值,atexit函数称为终止处理程序注册程序,注册完成以后,当函数终止是exit()函数会主动的调用前面注册的各个函数,但是exit函数调用这些函数的顺序于这些函数登记的顺序是相反的
 #include<stdio.h>
 #include<stdlib.h>

 void func1(void)
 {
         printf("in func1\n");
 }

 void func2(void)
 {
         printf("in func2\n");
 }

 void func3(void)
 {
         printf("in func3\n");
 }

 int main()
 {
         atexit(func3);
         atexit(func2);
         atexit(func1);

         printf("In main\n");

         ;
 }结果是
  1. In main
  2. in func1
  3. in func2
  4. in func3

C预处理和C库的更多相关文章

  1. css预处理和bootstrap

    css预处理框架的比较 http://www.oschina.net/question/12_44255?sort=default&p=4 bootstrap中文网 http://v3.boo ...

  2. CSS预处器的对比——Sass、Less和Stylus

    预处器的对比--Sass.LESS和Stylus 转载: 英文原文:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less ...

  3. 预处器的对比——Sass、LESS.

    发挥CSS预处器的作用是一种很有挑战性的事情.CSS预处器有不同的语言,有不同的语法和功能. 不同CSS预处器的蛮量.功能以及他们的好处——Sass.LESS 介绍 CSS预处理器是一种语言,用来编写 ...

  4. (转)预处器的对比——Sass、LESS和Stylus

    英文原文:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-sho ...

  5. IOS UI-键盘处理和UIToolbar

    // // ViewController.m // IOS_0225-键盘处理和UIToolBar // // Created by ma c on 16/2/25. // Copyright © 2 ...

  6. C++复习8.异常处理和RTTI

    C++异常处理和RTTI技术 20130930 1.异常处理的基本知识 C语言中是没有内置运行时错误处理机制,对于错误发生的时候使用的几种处理机制: 函数返回彼此协商后统一定义的状态编码来表示操作成功 ...

  7. JavaWeb:Cookie处理和Session跟踪

    JavaWeb:Cookie处理和Session跟踪 Cookie处理 什么是Cookie Cookie 是存储在客户端计算机上的文本文件,保留了各种跟踪信息.因为HTTP协议是无状态的,即服务器不知 ...

  8. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  9. C异常处理和C++异常处理的对比

    每一种编译器实现异常处理的方式会有所不同,但是都是基于Windows的SEH异常处理.这里以MSC编译器为例. C异常处理 #include <Windows.h> int main(in ...

随机推荐

  1. Centos上的安装openoffice+unoconv+swftools (转)

    ############################## #    swftools的安装     # ############################## 1.安装所需的库和组件 yum ...

  2. 帐户当前被锁定,所以用户 sa 登录失败。系统管理员无法将该帐户解锁 解决方法

    ALTER LOGIN sa ENABLE ; GO ALTER LOGIN sa WITH PASSWORD = 'password' unlock, check_policy = off, che ...

  3. Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类

     Android RecyclerView单击.长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类 我写的附录文章2,介绍了 ...

  4. Android快捷便利但不常被使用的原生工具类

    Android快捷便利但不常被使用的原生工具类 Android SDK原生 API中,有一些常用的工具类,运用得当可以省事省力省时,何况还是Android官方提供的,现在收集整理一些出来.DateUt ...

  5. Android GPS定位 获取经纬度

    移动 是手机与手持设备的最大特点,可以通过Eclipse的DDMS视图,模拟设备的位置变化,改变经纬度后,点击send,然后运行程序,在应用程序中,动态的获取设备位置,然后显示当前的位置信息. 获取位 ...

  6. Mini2440 LED驱动程序设计

    1 LED初始化: 2 LED闪烁设计 位或操作:| 取反操作:~ 位与操作:& http://www.tuicool.com/articles/eQzEJv

  7. 解决R速度太慢问题

    R的速度慢一直被人诟病,最近做一个比较大的dataset的分析,跑得实在太慢,发现症结是R的data frame的index太慢: 以下为测试: gene_list = 1:100000 eQTL_m ...

  8. 378. Kth Smallest Element in a Sorted Matrix

    Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

  9. 队列的链式实现(C语言)

    /* Queue.h */ #ifndef QUEUE_H_INCLUDED #define QUEUE_H_INCLUDED #include <stdio.h> #include &l ...

  10. sscanf格式化输出

    char DesChar[20] = {0}; char* SouChar= "1cZCD23456abEFdedfB"; sscanf(SouChar,"%[^A-Z] ...