Tag: c

Android OpenGL ES 2.0:GL_FLOAT纹理可以作为COLOR附件分配给FBO吗?

我想通过glReadPixels使用GL_FLOAT纹理获取值。 我的Android设备支持OES_texture_float 。 但是,附加GL_FLOAT纹理会出错。 在Android的OpenGL ES 2.0中,将GL_FLOAT纹理附加到FBO是不可能的? 还是要靠硬件? 我的部分代码是: 在里面: glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D,texture); glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,texWidth,texHeight,0,GL_RGB,GL_FLOAT,NULL); FBO附件: glBindFramebuffer(GL_FRAMEBUFFER,framebuffer); glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,texture,0); checkGlError(“FBO Settings”); // glGetError() return 0x502. status = glCheckFramebufferStatus(GL_FRAMEBUFFER); // glCheckFramebufferStatus() return 0. 如果有人有一些见解我会贬低它。

为什么gcc输出机器代码有nop指令

每次我做一个objdump -d我总是看到asm代码与批量的nop指令(指令什么都不做) 例如,采取相同的程序: #include #include int main() { printf(“Hello World!\n”); printf(“cos: %f\n”, cos(1)); return 1; } 示例的objdump在入口点的末尾有2个nops 0000000000400450 : 400450: 31 ed xor %ebp,%ebp 400452: 49 89 d1 mov %rdx,%r9 400455: 5e pop %rsi 400456: 48 89 e2 mov %rsp,%rdx 400459: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 40045d: 50 push %rax 40045e: 54 push %rsp […]

使用MSVS2005从C中的完整路径提取文件名

在C程序中,我在字符串中有一个文件路径(具体来说,这是存储在argv[0]的exe名称)。 我想提取文件名并使用MS Visual Studio 2005丢弃目录路径。任何内置函数?

无效的静态断言行为

我正在尝试使用GCC v4.3.x设置静态断言(在main函数之外): #define STATIC_ASSERT(cond) extern void static_assert(int arg[(cond) ? 1 : -1]) STATIC_ASSERT( (double)1 == (double)1 ); // failed 但是当我使用浮点数时,断言总是失败。 是否可以正确运行此静态断言?

将char数组转换为struct *类型

在下面的代码中,有人可能会解释行struct ether_header *eh = (struct ether_header *) sendbuf;上发生了什么struct ether_header *eh = (struct ether_header *) sendbuf; ? 我知道它正在创建一个类型为ether_header的指针eh ,并且在RHS上,您正在将sendbuf转换为tyoe struct ether_header的指针。 但是你怎么能这样做是sendbuf是一个char array ? 你也为什么要这样做? 这是完整代码发送以太网帧的链接 #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int sockfd; struct ifreq if_idx; struct ifreq if_mac; int tx_len = 0; char sendbuf[BUF_SIZ]; struct […]

虽然scanf!= EOF或scanf == 1?

Ceteris paribus (格式良好的数据,良好的缓冲实践以及不适用的东西),有什么理由我喜欢循环而scanf的返回值是1,而不是!EOF ? 我可能已经在某个地方读过这个,或者其他什么,但我也可能错了。 其他人怎么想?

面向对象的ANSI C?

可能重复: 你能用C编写面向对象的代码吗? 你好, 我想知道是否可以使用严格的ANSI C作为面向对象的语言。 如果可能,我如何在ANSI C中创建一个类。虽然该语言不是为OO设计的,但我真的很想尝试这个。 任何例子,链接等都是值得赞赏的。 提前致谢, Marnix van Rijswijk。

使用指针编写strcat()时出错

我正在尝试The C programming Language by K&R学习C The C programming Language by K&R 。 我正在尝试使用指针编写strcat()程序。 char *strcat (char *s, char *t){ char *d; d = s; while(*s++); s–; while(*s++ = *t++); return d; } int main () { char *name1; char *name2; name1 = “stack” ; name2 = “overflow”; printf(“%s %s\n”, name1, name2); printf(“strcat out : […]

相互引用的结构

我希望有两个结构可以互相包含。 这是一个例子: struct a { struct b bb; }; struct b { struct a aa; }; 但是这段代码没有编译。 gcc说: test.c:3: error: field ‘bb’ has incomplete type 有没有办法实现这个目标?

如何在C / C ++中检测机器字大小?

是否有一种或多或少可靠的方法(不一定完美)来检测我正在编译的目标架构的机器字大小 ? 机器字大小是指整数累加器寄存器的大小(例如x86上的EAX,x86_64上的RAX等, 不是流扩展,段或浮点寄存器)。 该标准似乎没有提供“机器字”数据类型。 因此,我不是在寻找100%可移植的方式,只适用于大多数常见情况(Intel x86 Pentium +,ARM,MIPS,PPC – 即基于寄存器的现代商品处理器)。 size_t和uintptr_t听起来像是好的候选者(并且在实践中匹配我测试的所有寄存器大小)但当然是其他东西,因此不能保证总是这样做,如Is size_t中已经描述的那样。 上下文 假设我在一块连续数据上实现哈希循环。 结果哈希依赖于编译器是可以的,只有速度很重要。 示例: http : //rextester.com/VSANH87912 在Windows上进行测试表明,在64位模式下以64位模式进行散列的速度更快,在32位模式下以32位进行散列: 64-bit mode int64: 55 ms int32: 111 ms 32-bit mode int64: 252 ms int32: 158 ms