代码-预编译连接符##  预处理指令

问题描述

预编译连接符##  预处理指令
 #include <stdio.h>
    #include<stdlib.h>

#define TR(m,n,p) m##n##p

int main ()
{
printf("%sn",TR("abc","xy","yz"));
return 0;
}
这段代码为什么编译不过?

解决方案

gcc?那好像要定义2个宏,可以看看这个解释http://www.cnblogs.com/wb-DarkHorse/p/3588787.html

解决方案二:

应该能编译过呀,你那边报的错误是什么?

解决方案三:

In function ‘main’:
define.c:7:19: error: pasting ""abc"" and ""xy"" does not give a valid preprocessing token
printf("%sn",TR("abc","xy","yz"));
^
define.c:3:20: note: in definition of macro ‘TR’
#define TR(m,n,o) m##n##o
^
define.c:7:25: error: pasting ""xy"" and ""yz"" does not give a valid preprocessing token
printf("%sn",TR("abc","xy","yz"));
^
define.c:3:23: note: in definition of macro ‘TR’
#define TR(m,n,o) m##n##o

时间: 2024-09-30 08:18:10

代码-预编译连接符##  预处理指令的相关文章

IOS代码运行的磨刀石-预编译指令

IOS中代码运行的磨刀石--预编译指令 所谓预编译,就是程序代码在编译之前,开发工具为我们预先做的一些工作.不要小瞧这些指令,没有它们,我们的代码可能寸步难行. 一.文件包含相关预处理命令 #include <header> #include "header" C语言中使用的包含文件的指令""和<>的区别为,""是从当前目录开始寻找文件,<>是从系统库中寻找文件.这两个指令不能使头文件循环引入,也不能重复包含同

利用预编译指令防止代码重复编译

 看下面一段代码     #include "test.h"   //看到这句我们重复了 三次 按照我们以往的编写 我们可能认为 他会出现变量函数 等重复定义的错误   在一个文件中这样写显然是不好  我这里是做演示 因为我们在大型项目开发中很有可能的重复包含 同一个头文件 为了防止错误的发生我们要再 头文件中利用#idndef  #ifdef 等预编译指令 来处理代码   #ifdef identifier #ifndef identifier   identifier标示符 可以使

C#必备知识之预编译指令

预编译又称为预处理,是做些代码文本的替换工作.处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令. 下面对C#中的预编译指令进行介绍: 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量,但是它没有具体的值,可以将它看为一个符号而已.#undef就是删除这个符号的定义.如果符

《嵌入式C编程:PIC单片机和C编程技术与应用》一1.4 C预编译指令

本节书摘来自华章出版社<嵌入式C编程:PIC单片机和C编程技术与应用>一书中的第1章,第1.4节,作者 [美]马克·西格斯蒙德(Mark Siegesmund),更多章节内容可以访问"华章计算机"公众号查看 1.4 C预编译指令 预编译是C语言中一个非常有意思的特性.预处理使用工具(预处理器)在编译前先扫描一遍代码,并对代码做出相应的修改从而生成用来编译的代码.预编译指令由#开始,占用一整行.在第3章中将会详细介绍它.在上面的例子中,#include指令将文件(e3.h)的

#ifdef预编译指令详解

  这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句.     条件编译命令最常见的形式为:     #ifdef 标识符     程序段1     #else     程序段2     #endif           它的作用是:当标识符已经被定义过(一般是用#define命令定

Delphi中预编译指令的使用方法

在Delphi中,也有与C相似的预编译指令,虽然该类指令只在当前的单个文件有效(也有可能是笔者未全面了解该类指令的真正用法),但是这一类指令对于进行多版本的制作工作(如从标准版中出学习版),确实有着相当不错的用途. 一.指令介绍: 1.DEFINE指令: 格式:{$DEFINE 名称} 说明 :用于定义一个在当前单元有效的符号(Symbol).定义了 之后可以使用IF DEF和IFNDEF指令来判断该符号是否存在. 2.UNDEF指令:格式:{$UNDEF 名称}说明:用于取消一个在当前单元已经

Delphi 中的预编译指令

  Delphi 中的预编译指令 在Delphi中,也有与C相似的预编译指令,虽然该类指令只在当前的单个文件有效(也有可能是笔者未全面了解该类指令的真正用法),但是这一类指令对于进行多版本的制作工作(如从标准版中出学习版),确实有着相当不错的用途.  一.指令介绍:  1.DEFINE指令:  格式:{$DEFINE 名称}  说明 :用于定义一个在当前单元有效的符号(Symbol).定义了之后可以使用IF DEF和IFNDEF指令来判断该符号是否存在.  2.UNDEF指令:  格式:{$UN

《嵌入式C编程:PIC单片机和C编程技术与应用》一第3章预编译指令3.1 标准预编译指令

本节书摘来自华章出版社<嵌入式C编程:PIC单片机和C编程技术与应用>一书中的第3章,第3.1节,作者 [美]马克·西格斯蒙德(Mark Siegesmund),更多章节内容可以访问"华章计算机"公众号查看 第3章 Embedded C Programming: Techniques and Applications of C and PIC MCUS 预编译指令 编译器对C程序的处理可以明确地分为两步.第一步由预编译器完成.以#开头的预编译指令可能会影响编译器设置或者进行

Delphi7.0 预编译指令说明

  Delphi7.0 预编译指令说明 A.1 使用编译设置对话框  编译器的编译指令是用于指定编译器对项目编译过程的动作和行为.可以通过[Project]->[Options]-> [Complier]选项页进行设置(快捷键:Crtl+Shift+F11),绝大部分的编译环境都可以通过这一对话框进行调 整,他包含了对代码.语法.调试信息等的设置.  1.代码设置(Code Generation) Optimization: 是否优化代码.包括防止变量到CPU寄存器.合并分解表达式.生成中间变