相关疑难解决方法(0)

真实使用X-Macros

我刚学会了X-Macros.您看过X-Macros的实际用途?他们什么时候成为工作的合适工具?

c macros c-preprocessor x-macros

67
推荐指数
5
解决办法
2万
查看次数

C中struct成员的默认值

是否可以为某些结构成员设置默认值?我尝试了以下但是,它会导致语法错误:

typedef struct
{
  int flag = 3;
} MyStruct;
Run Code Online (Sandbox Code Playgroud)

错误:

$ gcc -o testIt test.c 
test.c:7: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
test.c: In function ‘main’:
test.c:17: error: ‘struct <anonymous>’ has no member named ‘flag’
Run Code Online (Sandbox Code Playgroud)

c struct

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

C中的结构具有初始值

我想用C创建一个结构,初始值如下:

typedef struct {
    int id = 0;
    char *name = "none";
} employee;
Run Code Online (Sandbox Code Playgroud)

我知道以上是不可能的,有没有其他方法可以做到这一点?

c struct

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

是否需要C enum中的最后一个逗号?

C enum声明中是否需要最后一个逗号?

即是VAL3必要后的逗号?

enum { Val1, Val2, Val3, } someEnum;
Run Code Online (Sandbox Code Playgroud)

将其留入/取出是否有任何副作用

谢谢

c syntax enums

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

为什么这个嵌套的宏替换失败了?

我正在尝试应用X宏概念,以便有可能将所有struct成员初始化为自定义默认(无效)值.我写下面的代码:

#define LIST_OF_STRUCT_MEMBERS_foo \
    X(a) \
    X(b) \
    X(c)

#define X(name) int name;
struct foo {
     LIST_OF_STRUCT_MEMBERS_foo
};
#undef X


#define X(name) -1,
static inline void foo_invalidate(struct foo* in) {
     *in = (struct foo){
     LIST_OF_STRUCT_MEMBERS_foo
     };
}
#undef X

#define X(name) -1,
#define foo_DEFAULT_VALUE  { LIST_OF_STRUCT_MEMBERS_foo }
#undef X

static struct foo test = foo_DEFAULT_VALUE;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行预处理器时,定义foo_DEFAULT_VALUE无法替换X(name)调用-1,

预处理器输出:

struct foo {
     int a; int b; int c;
};

static inline void foo_invalidate(struct foo* in) …
Run Code Online (Sandbox Code Playgroud)

c macros initialization c-preprocessor

9
推荐指数
1
解决办法
431
查看次数

C++中函数指针的默认值

C++中函数指针的默认值是什么?(显然它不可能NULL,所以它是什么?)

这个程序应该如何表现?为什么?

struct S { void (*f)(); };

int main()
{
    S s = S();
    s.f();   // What is the value of s.f?
}
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

6
推荐指数
2
解决办法
4235
查看次数

结构中整数的默认值

我无法弄清楚如何在结构中设置整数的默认值.例如

 typedef struct {
        char breed[40];
        char coatColor[40];
        int maxAge = 20;
    } Cat;
Run Code Online (Sandbox Code Playgroud)

上面的代码给我一个执行错误 - 预期';' 在声明清单的末尾

c

1
推荐指数
2
解决办法
4933
查看次数