小编shj*_*eff的帖子

是否可以将编译器 -D 定义字符串值放入变量中?

我有以下代码:

#include <stdio.h>


#ifdef COMP_DEF
static const char * x = COMP_DEF;
#else
static const char * x = "NULL";
#endif

int main(int argc, char ** argv)
{
    printf("%s\n", x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想要的是用两种方式编译这个程序。首先是编译器参数:

-DCOMP_DEF=FOO_BAR

第二种方法没有这个。我希望我的程序会打印 FOO_BAR 和 NULL。但是当我尝试编译时出现以下错误:

:0:10: 错误:此处未声明“FOO_BAR”

(不在函数中) main.c:5:25: 注意:在宏 'COMP_DEF' 的扩展中 static const char * x = COMP_DEF;

是否可以在变量编译器传递的宏定义值中打印/存储?

c parameters

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

静态是什么意思?

考虑以下代码:

static uint8_t tab[] = {1, 2};

void foo() {
    uint8_t tab2[] = {1, 2};
}
Run Code Online (Sandbox Code Playgroud)

我这里有两个数组,一个是static关键字,第二个是在函数内.我应该如何恰当地命名每一个?因为那两个是静态的.我知道tab数组永远存在的区别,不像tab2只有在执行函数时才存在foo().如果tab2是静态数组,在函数退出后死掉它不应该被称为另一个吗?根据编程理论,这些数组的专有名称是什么?

另一个例子:

void bar() {
  static uint8_t tab[] = { 1, 2 };
}
Run Code Online (Sandbox Code Playgroud)

什么是根据这种变量的编程理论的专有名称?"静态静态"阵列?

c static

0
推荐指数
1
解决办法
130
查看次数

标签 统计

c ×2

parameters ×1

static ×1