小编ric*_*ard的帖子

如何在gcc命令行中定义字符串文字?

在gcc命令行中,我想定义一个字符串-Dname=Mary,然后在我要printf("%s", name);打印的源代码中Mary.
我怎么能这样做?

c c++ macros command-line gcc

66
推荐指数
4
解决办法
5万
查看次数

用C代码(GCC)定义程序段

在汇编语言中,很容易定义一个类似的部分:

.section foo
Run Code Online (Sandbox Code Playgroud)

如何在C代码中完成?我想将一段C代码放在一个特殊的部分而不是.text,所以我将能够将该部分放在链接描述文件的特殊位置.

我正在使用GCC.

gcc

10
推荐指数
1
解决办法
9428
查看次数

GCC预处理器

可能重复:
运行GCC预处理器

是否有GCC选项使GCC预处理器生成C源代码但过滤掉不相关的源代码?

例如,C文件必须#define switch为许多不同的平台定义.我只是在一个平台上,所以我希望C预处理器过滤掉不相关的代码.GCC是否支持这一点?

gcc c-preprocessor

9
推荐指数
3
解决办法
3万
查看次数

C语言中类似函数的宏定义

我想定义一个像MACRO这样的函数.即

#define foo(x)\
#if x>32\
 x\
#else\
 (2*x)\
#endif
Run Code Online (Sandbox Code Playgroud)

那是,

if x>32, then foo(x) present x
else, foo(x) present (2*x)
Run Code Online (Sandbox Code Playgroud)

但我的海湾合作委员会抱怨:

int a = foo(31);
Run Code Online (Sandbox Code Playgroud)

我认为C预处理器应该正确处理.因为在编译时,它知道x=33.它可以代替foo(33)(2*33)

c gcc c-preprocessor

7
推荐指数
3
解决办法
8万
查看次数

如何.bss部分初始化为零

我们知道.bss包含未初始化的变量.如果在c代码中,程序员在使用它们之前初始化变量.然后.bss在执行C代码之前不必为零.

我对吗?

谢谢

c gcc elf

4
推荐指数
2
解决办法
6008
查看次数

具有可变长度参数的宏

有一种方法可以#define使用可变长度参数的宏吗?

#define CALL(ar1, ar2, ar3)
do something
#endif
Run Code Online (Sandbox Code Playgroud)

在C代码中

CALL(0);
CALL(0,1);
CALL(0,1,2)
Run Code Online (Sandbox Code Playgroud)

all调用上面的CALL宏.如果未使用ar2,ar3,则预处理器只会忽略ar2或ar3的行.

c gcc

4
推荐指数
1
解决办法
790
查看次数

标签 统计

gcc ×6

c ×4

c-preprocessor ×2

c++ ×1

command-line ×1

elf ×1

macros ×1