Tag: gcc

GCC / Cygwin下的InetNtop和ws2tcpip.h

我正在使用cygwin 2.774下的gcc 3.4.4提供的ws2tcpip.h版本 我正在查找InetNtop函数,这是Microsoft的inet_ntop实现,但我找到的两个版本的ws2tcpip.h不包含该函数。 包括arpa/inet.h来获取inet_ntop会导致各种可怕的重复定义。 有没有理由提供gcc / cygwin的版本没有这个function? 是否有(合法?)方式从Microsoft获得具有该定义的版本? 注意:我100%确定我有正确的#include #define , #include和链接器选项 注意:请不要建议使用较旧的WSA*function我很清楚它们。 编辑: 今天进行了一些挖掘并得出结论,标题必须缺少条目,因为这里是标题的grep: asdf@fdsa ~$ grep -i -B 4 -A 2 -R “inet_ntop” /usr/include/ /usr/include/arpa/inet.h-in_addr_t inet_netof (struct in_addr); /usr/include/arpa/inet.h-in_addr_t inet_network (const char *); /usr/include/arpa/inet.h-char *inet_ntoa (struct in_addr); /usr/include/arpa/inet.h-int inet_pton (int, const char *, void *); /usr/include/arpa/inet.h:const char *inet_ntop (int, const void *, […]

gcc:无法从目标文件创建.so

我试图从* .o文件创建.so动态库并面临下面的问题。 日志: [nptemp-static]$ gcc -shared *.o -o libexample.so /usr/bin/ld: bindings_hubbub_parser.o: relocation R_X86_64_32 against `.rodata.str1.8′ can not be used when making a shared object; recompile with -fPIC bindings_hubbub_parser.o: could not read symbols: Bad value collect2: ld returned 1 exit status 任何的想法? 我是否需要使用指定的选项重新编译我的整个源代码? 实际上,我不知道我编译的源代码,因为所有的源代码都是开源的,我按照README中的说明下载和编译。

avr gcc内联asm变量输入操作数

我希望能够在运行时确定内联asm函数的端口寄存器 asm(“”::”I” (_SFR_IO_ADDR(PORTD))); _SFR_IO_ADDR只接受常量 我找到了这些选项,但似乎无法从变量传递寄存器。 asm(“”::”m” (PORTD)); asm(“”::”n” (&PORTD)); 认为这将是一个常见的问题/请求,但似乎无法找到任何答案

当我们在c中使用fork时,进程之间是否共享数据?

在这个C程序中,数据不在进程即父进程和子进程之间共享。 child拥有它自己的数据,而parent拥有它自己的数据,但指针显示两个进程的相同地址。 它是如何在后台完成的? fork是否生成相同数据的副本? 如果是这样,那么我们对两个进程都有相同的指针地址。 或者是由于为每个进程复制的静态分配数据而且每个进程的数据是独立的? 我想知道它是如何完成的? #include #include #include int main() { //Static Array int X[] = {1,2,3,4,5}; int i, status; //The fork call int pid = fork(); if(pid == 0) //Child process { //Child process modifies Array for(i=0; i<5; i++) X[i] = 5-i; //Child prints Array printf("Child Array:\t"); for(i=0; i<5; i++) printf("%d\t", X[i]); […]

通过arm c内联汇编程序在内存中操作数组

int smplSize = 48; int Smpl[48]; for(int i = 0; i < smplSize; i++) Smpl[i] = 0x0; Smpl[smplSize-1] = 0x1; int *ptrToSmpl = &Smpl[0]; printf("Sample @%p of Size %i :\n",(void*)ptrToSmpl,smplSize); asm volatile( "@ ————————————————- \n" "@ Invert the sample \n" "@ ————————————————- \n" //"0: \n" "ldr r2,[r3] \n" //"cmp r2,#0x1 \n" //"bne 1f \n" "add […]

‘All’在Makefile中属于哪里?

我们把所有这些都放在Makefile中? 我之前发现了类似的问题,但我需要更多细节。 我还查看了GNU make手册 ,但是在文档中迷失了方向。 我尝试了谷歌,但没有找到一个很好的例子。 所以,我做了我的最后一招,并试图通过自己黑客攻击Makefile来解决这个问题。 我有: CC=gcc CFLAGS=-Wall -g clean: rm -f all: ex1 这不会在C中编译我的ex1。另外,如果我想在此make文件中添加更多内容。 像ex1,ex2一样,运动一切。 我会把所有的都放在顶部并重复 rm – f whatever 线以下清洁? 感谢您的帮助和帮助。 耐心也很感激。

如何在C中的初始化程序中使用static_assert?

信不信由你,我想在宏扩展到指定的初始化器中使用static_assert : #define INIT(N) \ /* static_assert((N) < 42, "too large"), */ \ [(N)] = (N) int array[99] = { INIT(1), INIT(2), INIT(42) }; 我想从INIT(42)发出错误,但取消注释static_assert是一个语法错误。 AFAIK static_assert在语法上是一个声明。 我如何在这个例子中使用它?

代码用g ++但不是gcc编译

下面的代码用g ++而不是gcc编译,我想知道为什么? inline unsigned FloatFlip(unsigned f) { unsigned mask = -int(f >> 31) | 0x80000000; return f ^ mask; } 我假设在C ++中,int(f >> 31)是一个构造函数,但这让我想知道为什么它包含在代码中。是否有必要?

如何使用ld脚本在elf目标中设置set入口点

我想使用链接描述文件指定我的ELF文件的入口点。 我已经在我的ELF中定义了一些部分,所以想要设置一个入口点。 谁能告诉我怎么做?

强制结构中枚举字段的大小

[注意:这与指定C中枚举类型 的大小和C中枚举的大小有关? ,但在这些问题中,问题是如何最小化封闭结构的大小。 在这里,我们要指定结构的各个成员的大小,但仍然获得typedef’d enums的文档优势] 我正在实现串行通信协议的客户端。 我想使用C结构来捕获串行数据包的格式,我想使用C枚举来定义数据包中各种插槽的合法值。 我没有办法做到这两点,但由于我使用GCC,它可能是可能的。 作为问题的假设示例,假设我收到的数据包如下所示: typedef struct { uint16_t appliance_type; uint8_t voltage; uint16_t crc; } __attribute__((__packed__)) appliance_t; 这很清楚,我很确定我会得到一个长度为五个字节的结构。 但它没有捕获appliance_type和voltage只能采用某些值的事实。 我更喜欢这样的东西…… typedef enum { kRefrigerator = 600, kToaster = 700, kBlender = 800 } appliance_type_t; typedef enum { k120vac = 0, k240vac = 1, k12vdc = 2 } voltage_t; typedef struct { […]