我有以下代码:
#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;
是否可以在变量编译器传递的宏定义值中打印/存储?
考虑以下代码:
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)
什么是根据这种变量的编程理论的专有名称?"静态静态"阵列?