在C中,与C ++不同,必须命名函数定义的所有参数。 我没有使用(void)a撤消“未使用的参数”错误,或者公开使用__attribute__((unused)) ,而是创建了以下宏: #define UNUSED2(var, uniq) UNUSED_ ## line ## var __attribute((unused)) // squash unused variable warnings, can it be done without var? #define UNUSED(var) UNUSED2(var, __func__) 像这样使用 void blah(char const *UNUSED(path)) {} 有什么方法我可以保证一个独特的“虚拟”变量名称(显然LINE和__func__不能削减它),或忽略命名未使用的变量? Update0 最终使用的代码可在此处获得 。 #ifdef __cplusplus // C++ allows you to omit parameter names if they’re unused # define OMIT_PARAM #else […]
是否有可以在GCC编译时返回数组长度的宏或内置函数? 例如: int array[10]; 对于: sizeof(array) == 40 ???(array) == 10 Update0 我可能只是指出在C ++中这样做是微不足道的。 可以构建一个返回[]内部数字的模板。 我确信我曾经在Visual C ++编译器中找到了一个dimof和dimof宏/内置,但是再也找不到它了。
可能重复: int的大小是否取决于编译器和/或处理器? Integer的大小是依赖于编译器还是依赖于OS或处理器? 如果我在32位机器或64位机器上运行的32位操作系统或64位操作系统上使用gcc怎么办(在这种情况下只有64位操作系统)。
GCC 3.4.5(MinGW版本)生成警告:参数具有以下C代码的第2行的不完整类型: struct s; typedef void (* func_t)(struct s _this); struct s { func_t method; int dummy_member; }; 有没有办法解决这个问题(或至少隐藏警告)而不将方法参数的签名更改为(struct s *)? 注意: 至于为什么这样的东西会有用:我正在修补面向对象的框架; ‘method’是调度表中的一个条目,由于框架的特殊设计,通过值传递’_this’而不是通过引用传递(通常是这样)…
我们知道现代处理器直接在处理器上执行诸如cosine和sin指令,因为它们具有操作码。 我的问题是这些指令通常需要多长时间。 他们是否需要恒定时间或依赖输入参数?
我在Ubuntu上使用Eclipse来编写/编译/运行C代码。 我正在尝试构建我的项目。 以下是Eclipse控制台中的输出。 22:18:31 **** Build of configuration Debug for project Project1 **** make all Building file: ../project1.c Invoking: GCC C Compiler gcc -I/lib/i386-linux-gnu -O0 -g3 -Wall -c -fmessage-length=0 -pthread -lm -MMD -MP -MF”project1.d” -MT”project1.d” -o “project1.o” “../project1.c” ../project1.c: In function ‘main’: ../project1.c:146:6: warning: unused variable ‘this_thread_id’ [-Wunused-variable] ../project1.c: In function ‘_pre_init’: ../project1.c:126:1: warning: control […]
代码: GValue value = { 0 }; 发出以下警告: 缺少初始值设定项[-Wmissing-field-initializers] 我知道这是一个gcc’s BUG ; 但有一些技巧可以删除它吗? 真的不太好看到这种不真实的警告。 但是我不希望断电警告,因为它也会隐藏我的真实警告。 很抱歉,但我无法将我的gcc更新为4.7(看起来它已修复)版本。
我正在为ARM编译程序。 makefile有一个标志-msoft-float ,告诉编译器使用软件浮点仿真。 我的问题是如何在makefile中指定使用硬件浮点指令。 我试过-mhard-float ,但如果我这样做,我就会出错。 我也尝试过-msoftfp-float,因为这个网站告诉我,但编译器甚至都没有识别出那个标志。 那么,请告诉我应该如何解决这个问题。
我使用File-> New file或Project-> Non Qt Projects-> Plain C Project在qt creator中创建了一个普通的c项目 main.c中 #include int main(void) { printf(“Hello World!\n”); return 0; } test.pro TEMPLATE = app CONFIG += console CONFIG -= qt SOURCES += main.c 我使用Ctrl + B构建项目,这是成功的。 但是我无法使用Ctrl + R运行项目。 我以前用来运行以下命令来编译和运行c程序 gcc main.c ./a.out 但是现在我无法获得如何在qt creator中运行c程序。 我是Qt Creator的新手。 请帮忙
如果可能,我想使用SSE指令优化以下代码段: /* * the data structure */ typedef struct v3d v3d; struct v3d { double x; double y; double z; } tmp = { 1.0, 2.0, 3.0 }; /* * the part that should be “optimized” */ tmp.x /= 4.0; tmp.y /= 4.0; tmp.z /= 4.0; 这有可能吗?