SConscript中的SharedLibrary的CCCOMSTR / LINKCOMSTR不起作用

我对SCons很新,并注意到当我在SConscript中构建共享库时,CCCOMSTR和LINKCOMSTR将无法工作。 这是我的SConstruct的简化版本: CFLAGS = [“-Wall”, “-pedantic”, “-std=c99”] # building environment env = Environment(CFLAGS = CFLAGS, CPPDEFINES = [“DEBUG”]) # checking dependencies conf = env.Configure() conf.CheckHeader(“stdlib.h”) conf.CheckHeader(“string.h”) conf.CheckLib(“libdl”) env[“CCCOMSTR”] = “Compiling $SOURCE …” env[“LINKCOMSTR”] = “Linking $TARGET …” SConscript(dirs = [“lib1”, “lib2”], exports=[“env”, “conf”], name = “SConscript”) # main function env.Program(target = “prog”, LIBS=[“libdl”], source = […]

如何在C中旋转1d数组的一部分?

我打印出一个6×6 1darrays,但想要逆时针旋转左上角3×3部分。 有算法吗? 将来我也想像右下3×3部分或右上3×3部分或左下3×3部分一样旋转。 a[0] a[1] a[2] a[3] a[4] a[5] a[1] a[2] a[8] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[0] a[7] a[14] a[9] a[10] a[11] a[12] a[13] a[14] a[15] a[16] a[17] —> a[6] a[12] a[13] a[18] a[19] a[20] a[18] a[19] a[20] a[21] a[22] a[23] a[18] a[19] a[20] a[21] a[22] a[23] a[24] a[25] […]

从unsigned long int转换为signed int,反之亦然

我想将一个signed int传递给gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n) 。 我传递的signed int大于或等于零。 该函数将返回一个介于0和n之间的数字,因此如果我传递一个正的signed int,它将返回一个在signed int范围内的数字。 然后我想将返回值存储在signed int中。 用明显的预期行为来做到这一点最简洁的方法是什么? 我在64位Linux机器上使用64位编译器。 更新抱歉,伙计们。 请忽略。 我的代码问题其实在其他地方。 我误解了gdb的输出。

gstreamer gst_element_seek在mpeg2ts上非常慢

这是我到目前为止在玩的时候想出来的: case GDK_Up: { gint64 pos_ns, dur_ns, seek_ns; GstFormat format; format = GST_FORMAT_TIME; gst_element_query_duration(pipeline,&format,&dur_ns); gst_element_query_position(pipeline,&format,&pos_ns); g_print (“Time: %” GST_TIME_FORMAT ” / %” GST_TIME_FORMAT “\n”, GST_TIME_ARGS (pos_ns), GST_TIME_ARGS (dur_ns)); seek_ns = pos_ns + 60*GST_SECOND; if (!gst_element_seek (pipeline, 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET, seek_ns, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) { g_print (“Seek failed!\n”); } } break; 这是我的管道: pipeline = […]

如何从lex / yacc获取更多解析错误信息?

如何从lex / yacc获取更多解析错误信息? 目前在我正在使用的lex文件中: int yyerror(const char *msg) { fprintf(stderr, “Parse error: %s\n”, msg); return 0; } 但是当我运行我的程序时,yyerror会输出一条空白消息。 我尝试将yylineno和yytext添加到yyerror但这会导致编译错误。 我尝试将“%error-verbose”添加到yacc文件,并将“%option debug”添加到lex文件,但这些对消息没有任何影响。 我确实注意到yyparse输出一个括号:'{‘来自我试图解析的文件,我不知道这个的意义。 我正在使用win_flex和win_bison。

推荐的信号要赶上?

目前,我抓住SIGSEGV,给自己发一封电子邮件,然后abort(),这样我就可以得到一个核心文件并调试我的程序。 (如果我没有抓到,我将无法知道我的特定程序是否已被发现。我的程序是在与我自己的服务器不同的服务器上运行的。) 是否有任何其他信号我应该抓住调试或我应该知道的原因?

在堆上创建结构?

我已经被指示通过在堆上创建一个String结构来编写模型strdup,它包含源的副本。 我想我已成功编写了strdup,但我不确定我是否在堆上创建了一个Struct … typedef struct String { int length; int capacity; unsigned check; char ptr[0]; } String; char* modelstrdup(char* src){ int capacity =0, length=0, i = 0 ; char *string; while ( src[length] != ‘\0’){ length++; } capacity = length; string = malloc(sizeof(String) + capacity + 1); while ( i < length ){ string[i] = […]

压缩算法

我正在研究压缩算法,其中我们必须用C编写代码。程序获取一个文件并删除每个字符中最重要的位并将压缩文本存储在另一个文件中。 我写了一个名为compress的函数,如下所示。 我在释放out_buf的同时遇到了段错误。 任何帮助都将是一个巨大的乐趣。

在C中制作金字塔

我必须使用C,而不是C ++制作金字塔。 我要做的就是这个,我有一个字符串“这是一个字符串”(是的,空间假设在那里),我必须从两边“删除”一个字母,并打印出来。 像这样 “this is a string ” “his is a string” “is a strin” “sa stri” ” a str” 重复此过程,直到没有更多字符。 我的老师说要使用子串,C中有没有说过的东西 从位置打印(索引0到索引x) 从位置打印(索引1到索引x-1) 我知道我必须使用for循环。

播种随机数发生器

我不记得看到任何程序调用srand与srand(time(NULL))任何东西。 在什么情况下会用一些其他值来调用srand ?