Tag: gcc

在Mac OS high sierra上安装GCC

我已经访问了以下答案,但我的问题不同了。 在mac上安装GNU GCC Mac OS附带了Clang,不知何故/usr/bin/gcc链接到Clang工具我假设因为这一行。 gcc clang:错误:没有输入文件 关于如何在我的系统上安装https://gcc.gnu.org/ standalone的任何想法? gcc –version 配置为: – prefix = / Applications / Xcode.app / Contents / Developer / usr –with-gxx-include-dir = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.13.sdk的/ usr /包括/ C ++ / 4.2.1 Apple LLVM 9.0.0版(clang-900.0.38) 目标:x86_64-apple-darwin17.2.0 […]

SSE对冲浮标练习

在处理SSE(AVX)中的整数和浮点数时,将所有整数转换为浮点数并仅使用浮点数是一个好习惯吗? 因为之后我们只需要一些SIMD指令,而我们需要使用的是添加和比较指令( <, <=, == ),我希望这种转换应该完全保留。

GCC中的枚举器属性

GCC的在线文档声称它支持枚举器属性: GCC允许在枚举器上设置属性。 然后它给出了使用这些属性的代码示例: enum E { oldval __attribute__((deprecated)), newval }; int fn (void) { return oldval; } 但是当我在我的GCC(4.8.4)上尝试它时,我收到一个错误: tc:2:15: error: expected ‘,’ or ‘}’ before ‘__attribute__’ oldval __attribute__((deprecated)), ^ 我需要在某个地方启用它们吗? 或者使用不同的GCC? 请注意,Clang也声称支持这个C扩展,但是使用Clang它可以正常工作。

clang:不能使用带有多个-arch选项的’precompiled-header’输出

在编译我的项目时,从Xcode 4.5切换到Xcode 5时,我突然收到此错误消息。 clang: cannot use ‘precompiled-header’ output with multiple -arch options 我的GNU Makefile包含以下片段: define build CC-$(platform)-$(2)?=$(CC-$(platform)) $(bindir)/$(platformdir)-$(2)$($(3)-dirsuffix)/$(1)_%: $(srcdir)/$(1)/%.c $(common) mkdir -p $$(@D) $$(CC-$(platform)-$(2)) $(cflags) $($(3)-cflags) $(CFLAGS) -o $$@ $$^ $($(3)-ldflags) $(LDFLAGS) endef $(foreach library,$(libraries),$(foreach arch,$(archs),$(foreach configuration,$(configurations),$(eval $(call build,$(library),$(arch),$(configuration)))))) 并且$(CC)评估为符号链接到cc 。

在运行时设置数组大小

我知道如何在函数内创建结构数组: typedef struct item { int test; }; void func (void) { int arraysize = 5; item ar[arraysize]; } 但是,当全局声明数组时,我该怎么做? typedef struct item { int test; }; item ar[]; void func (void) { int arraysize = 5; // What to here? }

为什么GCC以不同方式处理两个相似的循环?

注意: 如果我理解下面的代码是正确的,它将跳过整个循环,因为当比较unsigned (j)和signed (-1)时,似乎-1将转换为UINT_MAX 。 (像这个问题解释 ) 第一个循环: unsigned int j = 10; for (; j > -1; –j) { —> `>` printf(“%u”, j); } 第一个循环的汇编代码的一部分: movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -20(%rbp) movq %rsi, -32(%rbp) movl $10, -4(%rbp) nop —>**elision** popq %rbp .cfi_def_cfa 7, 8 ret 第二个循环的第二个循环: unsigned int j = 10; for […]

返回VLA是否安全?

以下代码使用堆: char* getResult(int length) { char* result = new char[length]; // Fill result… return result; } int main(void) { char* result = getResult(100); // Do something… delete result; } 因此必须在某处删除result ,最好由所有者删除。 根据我的理解,下面的代码使用名为VLA的扩展,它是C99的一部分,而不是C ++标准的一部分(但是由GCC和其他编译器支持): char* getResult(int length) { char result[length]; // Fill result… return result; } int main(void) { char* result = getResult(100); // Do something… […]

Cygwin g ++编译失败

我正在尝试使用cygwin编译c ++文件。 我收到以下错误: 致命错误:stddef.h:没有这样的文件或目录#include 此链接提供了一个解决方案: 链接 。 但即使我从UI(setup.exe)升级gcc和g ++包它仍然给我同样的错误。如何解决这个问题? 如何从cygwin命令行升级它?

强制GCC访问带有单词的结构

在ARM处理器(HT32F1655)上,寄存器的特定部分需要字访问。 从用户手册: 请注意,AHB总线中的所有外设寄存器仅支持字访问。 但是gcc在打包的结构上生成了一些ldrb (加载字节)和strb (存储字节)指令。 结构看起来像这样: typedef union { struct { uint32_t CKOUTSRC : 3; //!< CKOUT Clock Source Selection uint32_t : 5; uint32_t PLLSRC : 1; //!< PLL Clock Source Selection uint32_t : 2; uint32_t CKREFPRE : 5; //!< CK_REF Clock Prescaler Selection uint32_t : 4; uint32_t URPRE : 2; //!< USART Clock […]

当我在c中编译程序时,为什么会得到一个未定义的引用(例如`glColor3f’)?

我正在编译一个在ubuntu(linux)中使用opengl的示例程序。 代码的简短片段如下: #include #include void createBox( GLfloat centroX, GLfloat centroY, GLfloat corR, GLfloat corG, GLfloat corB ) { /* Cor */ glColor3f( corR, corG, corB ); 我安装了在opengl(在ubuntu中)开发的所有软件包,即: freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev 我像这样编译示例: gcc -lGL CG_ex04.c -o main 我得到以下内容 /tmp/ccDWmJDZ.o: In function `createBox’: CG_ex04.c:(.text+0x31): undefined reference to `glColor3f’ 和同一行的其他错误。 有谁知道我做错了什么? Thanx提前获得任何帮助。