小编use*_*265的帖子

在C中转发结构的声明?

#include <stdio.h>

struct context;

struct funcptrs{
  void (*func0)(context *ctx);
  void (*func1)(void);
};

struct context{
    funcptrs fps;
}; 

void func1 (void) { printf( "1\n" ); }
void func0 (context *ctx) { printf( "0\n" ); }

void getContext(context *con){
    con=?; // please fill this with a dummy example so that I can get this working. Thanks.
}

int main(int argc, char *argv[]){
 funcptrs funcs = { func0, func1 };
   context *c;
   getContext(c);
   c->fps.func0(c);
   getchar();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了一些东西.请帮我解决这个问题.谢谢.

c struct declaration forward

37
推荐指数
2
解决办法
10万
查看次数

C中的默认参数

是否可以在C中设置默认参数的值?例如:

void display(int a, int b=10){
//do something
}

main(){
  display(1);
  display(1,2); // override default value
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2008,抱怨-void显示语法错误(int a,int b = 10).如果这在C中不合法,那么替代方案是什么?请告诉我.谢谢.

c parameters default

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

在C中查找字符串数组中的字符串数

char* names[]={"A", "B", "C"};
Run Code Online (Sandbox Code Playgroud)

有没有办法找到数组中的字符串数量.例如,在这种情况下,它必须是3.请让我知道.谢谢.

c arrays string numbers

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

输出C中的参数

void swap(int &first, int &second){
    int temp = first;
    first = second;
    second = temp;
}
Run Code Online (Sandbox Code Playgroud)

//////

int a=3,b=2;
swap(a,b);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,C编译器抱怨"void swap(int&first,int&second)"在"(/ {"之前有一个语法错误,如缺少"&".

我不明白为什么?C不支持此功能吗?

c out parameter-passing

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

将int转换为C中的short

我有:

int a = 2147483647;
short b = (short)a;
Run Code Online (Sandbox Code Playgroud)

我得到了,b = -1而我希望int32转换为int16(short).我希望看到一些价值,而不是 -1.

请有人帮我这个.

c int short

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

结构中的函数指针,但在C中具有不同原型的函数

假设我有功能:

void func1(int x)
{
    ....
}

void func2(int x, int y)
{
    ....
}

void func3(int x, int y, int z)
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

并说我想在结构中有一个函数指针:

例如

typedef struct{
     char *ename;
     char **pname;
    < and here I want to have a function pointer> ??
} Example;

Example ex[3];
Run Code Online (Sandbox Code Playgroud)

现在,我想将ex [3]数组填充为:

ex[0].ename = "X0";
ex[0].pname[0]="A0";
ex[0].pname[1]="B0";
ex[0].<function pointer to func1() > ??


ex[1].ename = "X1";
ex[1].pname[0]="A1";
ex[1].pname[1]="B1";
ex[1].<function pointer to func2() > ??
Run Code Online (Sandbox Code Playgroud)

... 等等...

有可能创造这样的东西吗?请帮我解决一下这个.谢谢.

c struct pointers prototype function

5
推荐指数
1
解决办法
2028
查看次数

在C中跳转表示例

请给我一些跳转表用法的例子.我在维基百科上看过这个例子:

#include <stdio.h>
#include <stdlib.h>

typedef void (*Handler)(void);    /* A pointer to a handler function */



/* The functions */
void func3 (void) { printf( "3\n" ); }
void func2 (void) { printf( "2\n" ); }
void func1 (void) { printf( "1\n" ); }
void func0 (void) { printf( "0\n" ); }



Handler jump_table[4] = {func0, func1, func2, func3};



int main (int argc, char **argv) {
    int value;

    /* Convert first argument to 0-3 integer (Hash) */
    value = atoi(argv[1]) …
Run Code Online (Sandbox Code Playgroud)

c jump-table

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

使用C中的索引访问枚举

考虑:

enum Test
{
    a = 3,
    b = 7,
    c = 1
};
Run Code Online (Sandbox Code Playgroud)

我想使用索引访问枚举.像这样的东西:

for (i=0; i<n; i++)
    doSomething((Test)i);
Run Code Online (Sandbox Code Playgroud)

我怎么能做这样的事情,我可以使用索引访问枚举,虽然枚举的成员有不同的值?

c indexing enums

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

找到我在gerrit的所有变化

我想看看Gerrit的所有变化.我怎样才能做到这一点?换句话说,在perforce中,我可以看到我在GUI中提交的所有更改列表的列表.我想用Gerrit或Git做同样的事情.

git gerrit

5
推荐指数
1
解决办法
1431
查看次数

如何设置llvm-symbolizer?

我能够使用位于“Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/7.0.2/bin”中的脚本“asan_device_setup”推送位于ANDROID_SDK中的ASAN相关库我的 macOS。

但是,我无法获得 Address Sanitizer 调用堆栈的任何符号信息。我将位于“/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin”内的文件“llvm-symbolizer”推送到Android设备上的“/system/bin/”。

当我尝试从终端执行“adb shell /system/bin/llvm-symbolizer --help”时,我收到一些奇怪的错误消息。显然 llvm-symbolizer 没有按预期方式运行。

因此,我看到此警告消息:

==6937==WARNING: external symbolizer didn't start up correctly!
==6937==WARNING: Can't write to symbolizer at fd 56
==6937==WARNING: external symbolizer didn't start up correctly!
==6937==WARNING: Failed to use and restart external symbolizer!
Run Code Online (Sandbox Code Playgroud)

除了 .so+offset 和 Address Sanitizer 相关崩溃的内存地址之外,没有任何符号信息。

我真的不确定我哪里出错了。除了 llvm-symbolizer 之外,有没有办法获取 ASAN 相关崩溃的符号信息。请帮忙。谢谢。

android symbols stack-trace llvm-clang address-sanitizer

5
推荐指数
1
解决办法
1242
查看次数