Tag: gcc

clock_gettime和CLOCK_MONOTONIC上的编译错误

我在程序中使用clock_gettime。 我试过包括但是没有效果。 我还为我的编译器参数添加了-lrt但仍然得到了相同的错误。 这是开启 CentOS Linux release 7.2.1511 (Core) gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4) GNU ld version 2.23.52.0.1-55.el7 20130226 ldd (GNU libc) 2.17 编译器输出: gcc -o main packet.c connect.c transport.c accept.c main.c close.c util.c receive.c send.c congestion.c -Wall -g -std=c99 -lrt util.c: In function ‘millis’: util.c:42:21: error: storage size of ‘t’ isn’t known […]

gcc:未定义的参考错误

我想使用ffmpeg / libavfilter / lavfutils.h中定义的函数’ff_load_image’。 program.c #include “../ffmpeg/libavfilter/lavfutils.h” int main () { uint8_t* data; int linesize, width, height, log_ctx; int i = ff_load_image(&data, &linesize, &width, &height, AV_PIX_FMT_RGB24, “blue.jpg”, &log_ctx); } 运行 gcc -I$HOME/ffmpeg/include program.c -L$HOME/ffmpeg/lib -lavfilter -lavcodec -lavutil 给出未定义的引用错误。 program.c: In function \u2018main\u2019: program.c:9: warning: passing argument 1 of \u2018ff_load_image\u2019 from incompatible pointer type ../ffmpeg/libavfilter/lavfutils.h:39: […]

OpenMP:错误:’w.13’未在封闭并行中指定

我正在尝试使用OpenMP来并行化一个模拟生命游戏的简单程序。 我有以下function: void evolve_parallel(void *u, int w, int h) { unsigned (*univ)[w] = u; unsigned new[h][w]; #pragma omp parallel for firstprivate(univ, new, w, h), collapse(2), default(none) for_y for_x { int n = 0; for (int y1 = y – 1; y1 <= y + 1; y1++) for (int x1 = x – 1; x1 <= […]

__attribute __((__ align__))不使用静态变量

这让我疯了好几天。 如果我将它声明为static我无法将数组对齐到16。 任何帮助非常感谢。 经过修改的版本: #include #include #define MAX_INPUTS 250 int main() { float input[MAX_INPUTS] __attribute__ ((__aligned__(16))); printf(“Address of input: %p\n”, input); printf(“Assert1: %x\n”, ( ((int) (input)) ) ); printf(“Assert2: %x\n”, ( ((int) (input)) % 16 ) ); printf(“Assert3: %x\n”, ( ((int) (input)) % 16 ) == 0 ); assert ( ( ((int) (input)) ) ); […]

指向未知数组的指针?

gcc接受以下函数声明,但g ++不接受。 void do_something(char (*)[]); g ++给出的错误是: error: parameter ” includes pointer to array of unknown bound ‘char []’ 我相信在C中,参数转换为char **,这就是gcc接受它的原因。 我能以某种方式让g ++接受这个function吗? 参见示例: http : //ideone.com/yqvqdB 🙂 谢谢!

apcs-gnu ABI中的结构布局

对于此代码 : struct S { unsigned char ch[2]; }; int main(void) { _Static_assert( sizeof(struct S) == 2, “size was not 2”); } 使用带有ABI apcs-gnu (又名OABI或EABI版本0)的ARM的GCC(各种版本),我得到断言失败。 事实certificate结构的大小是4 。 我可以通过使用__attribute__((packed))解决这个问题; 但我的问题是: 使这个结构大小为4的理由是什么? 是否有任何文档指定此ABI中结构的布局? 在ARM网站上,我找到了aapcs (EABI第5版)的文档,它确实将此结构指定为大小为2; 但我找不到关于apcs-gnu任何信息。

int64_t的宽度是64位吗?

对于以下代码 static inline float fix2float(int64_t f) { return (float)f / (1 << 60); // <– error here } 编译器给了我这些警告。 warning: left shift count >= width of type warning: division by zero 当64> 60时,为什么编译器会发出这些警告?

在指针指向指针链的末尾初始化值

好吧,我一直在这一天(不是hw)开始,虽然它可能不是一个特别有用的代码,但这是一个巧妙的概念。 我试图找出最后设置值的最佳方法,因为缺少更好的名称,指向指针链的指针。 例如,我声明: int *****ptr; 将每个指针设置为指针段的最佳方法是什么,一直到实际的int值? 此代码无法编译,因为它不喜欢我使用和取消引用void指针的方式: #include #include #define NUMPOINTERS 5 int main(int argc, char **argv) { int *****number; *****number = malloc(sizeof(void*)); void *ptr = *number; int i; for(i = 1; i < NUMPOINTERS; i++) { if(i == NUMPOINTERS – 1) { ptr = malloc(sizeof(int)); int *iPtr = (int*)ptr; *iPtr = 900; break; } […]

是否可以在C中创建自定义宽度整数?

C标准和C编译器带有固定宽度的整数类型,例如uint8_t , int16_t等。 有没有一种方法可以在C中定义一个128位整数,它可以在代码中使用与现有固定宽度整数相同的语义?

堆栈跟踪中“纯虚拟”调用的含义是什么?

我的服务崩溃了,我有这个堆栈跟踪。 我无法从这里推断出任何东西 00007f859cd27834 __gnu_cxx::__verbose_terminate_handler() @ 00007f859cd25865 __cxxabiv1::__terminate(void (*)()) @ 00007f859cd25892 std::terminate() @ 00007f859cd263be __cxa_pure_virtual @ 0000000001996f9f My::Class::~Class() 有人可以帮忙吗?