由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Question on using ## in #define
相关主题
c preprocess question关于在C中定义常量
python 小问题问个指针array 的简单问题
What syntax is this?(about macro)入门问题,perl里s@\_@@g 是什么意思?
这个结果是啥,为什么呢?求助 怎么编辑 多个 .c files(比如a.c, b.c) 和一个.h file(ab (转载)
谁来解释一下这个是compiler问题吗?perl问题s/.../.../..;
C 和 C++ 的区别请问call by name是不是C编译器都没实现
请教怎么用#define实现如下的功能Perl 的一个问题
array和pointer在作为函数返回时有啥区别 (C)三个C syntax 弱问题
相关话题的讨论汇总
话题: join话题: define话题: lace话题: rep话题: question
进入Programming版参与讨论
1 (共1页)
m***t
发帖数: 254
1
#include
#define REPLACE hello world
#define JOIN(a, b) a##b
int main() {
printf("JOIN(REP, LACE)\n");
return 0;
}
run on gcc, output:
JOIN(REP, LACE)
Why?
m***t
发帖数: 254
2
Thanks. That works. But i am kind of curious since I thought preprocessor
should handle the string substitution. And i tried the following which gives
me compilation error.
#include
#define REPLACE hello world
#define JOIN(a, b) a##b
int main() {
printf("%s", JOIN(REP, LACE));
return 0;
}
O*******d
发帖数: 20343
3
C preprocessor will not replace literal string. C string inside double quote
is literal except escaped sequence. In your first case, "JOIN(REP, LACE)\n
" is a literal string "JOIN(REP, LACE)" followed by a new line character. In
your second case, hello world is not a string.
1 (共1页)
进入Programming版参与讨论
相关主题
三个C syntax 弱问题谁来解释一下这个是compiler问题吗?
#ifdef, #ifndef 这些 preprocessor 应该叫什么呀?C 和 C++ 的区别
一个简单的小问题请教怎么用#define实现如下的功能
one question about operator deletearray和pointer在作为函数返回时有啥区别 (C)
c preprocess question关于在C中定义常量
python 小问题问个指针array 的简单问题
What syntax is this?(about macro)入门问题,perl里s@\_@@g 是什么意思?
这个结果是啥,为什么呢?求助 怎么编辑 多个 .c files(比如a.c, b.c) 和一个.h file(ab (转载)
相关话题的讨论汇总
话题: join话题: define话题: lace话题: rep话题: question