大家好,我最近在做一个软件,发现gcc在包含头文件时,他会自动把结构体放到他喜欢的位置上,这让我很苦恼。 比如说,我有个a.c文件,他包含了b.h和c.h(b.h在c.h之前包含),b.h一开始就定义了一个叫做“list”的结构体(b.h的第一行,当然除了这个结构体外还有其他内容),c.h也定义了很多结构体,此时我用gcc的-E预处理a.c,然后查看预处理后的a.c,发现"list"这个结构体竟然跑到3700行去了,他本来应该在第一行的不是吗?为什...
比如: 我在 stdlib.h里找到:[code]__BEGIN_NAMESPACE_STD /* Return a random integer between 0 and RAND_MAX inclusive. */ extern int rand (void) __THROW; /* Seed the random number generator with the given number. */ extern void srand (unsigned int __seed) __THROW; __END_NAMESPACE_STD [/code]现在我想去找rand实现的源代码文件,我该如何快速去找出来呢? 我这个方法: find . -name "*.*" | xargs grep ran...
本帖最后由 xufengww 于 2014-03-26 21:56 编辑 //first.h void play(); //first.c void play(){ printf("hello,world!\n"); } //second.c #include "first.h" void main(){ play(); } 编译时cc second.c -o second 时出现未定义函数play(). 这个是不是由于编译器无法找到first.c下的函数play()? 请问各位大侠,如何才能利用头文件的声明让second.c文件可以调用到first.c中定义的play()函数呢? 可不可以不用 "...
环境是:cygwin, 交叉编译工具sde-gcc,
问题:有个源文件使用 #include
Feroder11, 要用jrtp的头文件。 已经在/etc/bashrc 设置了 export PATH=$PATH:/usr/include/jrtplib3/ 然后用echo PATH也显示设置好了 也重起系统了 但是gcc(或者说是g++)死活找不到/usr/include/jrtplib3/的路径, 为什么? (顺便提一下,用VPATH=/usr/inluce/jrtplib3/也不行, 但是用 -I /usr/include/jrtplib3就可以)
[code]
#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO
inline void*
memchr(void* __p, int __c, size_t __n)
{ return memchr(const_cast
在交叉编译的时候我们需要用到其他的库,在 config 时候可以通过 “-I” 来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法。看下文的红色部分。 有大量的环境变量可供设置以影响 gcc 编译程序的方式。利用这些变量的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目录名...
作者: bzippnmdoc 出自: http://www.linuxdiyf.com 1、配置gcc 刚装好的gcc什么都不能编译,因为没有一些必须的头文件,所以要安装build-essential,安装了这个包会安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等好多必须的软件和头文件。 sudo apt-get install build-essential 安装完成后写一个C语言程序testc.c测试一下。 QUOTE: #include int main() { printf("Hello Ubuntu!\n"); return 0; } $ gcc testc.c -o t...