`
popi
  • 浏览: 9290 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

c misc

阅读更多
1. warning root cause.
warning: incompatible implicit declaration of built-in function ‘exit’
使用gcc编译程序,若碰到这样的warning:incompatible implicit declaration of built-in function ‘exit’,则表明没有include相应的头文件。
在*.h文件里,加了一行include就解决问题了: #include <stdlib.h>

warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
sys_errlist[errno] -> strerror(errno)
2. sockaddr & sockaddr_in
  struct   sockaddr结构类型是用来保存socket信息的: 
  struct   sockaddr   { 
     unsigned   short   sa_family;   /*   地址族,   AF_xxx   */
       char   sa_data[14];   /*   14   字节的协议地址   */ 
    }; 

  sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;sa_data则包含该socket的IP地址和端口号。
  另外还有一种结构类型: 
  struct   sockaddr_in   { 
     short   int   sin_family;   /*   地址族   */ 
     unsigned   short   int   sin_port;   /*   端口号   */ 
     struct   in_addr   sin_addr;   /*   IP地址   */
     unsigned   char   sin_zero[8];   /*   填充0   以保持与struct   sockaddr同样大小   */ 
  }; 
  这个结构更方便使用。sin_zero用来将sockaddr_in结构填充到与struct   sockaddr同样的长度,可以用bzero()或memset()函数将其置为零。指向sockaddr_in   的指针和指向sockaddr的指针可以相互转换,这意味着如果一个函数所需参数类型是sockaddr时,你可以在函数调用的时候将一个指向sockaddr_in的指针转换为指向sockaddr的指针;或者相反。

3. c extern
    1. 用于变量,告诉编译器,这是变量声明,变量的定义在另外的模块。
    2. 对函数来说,没有意义。
    3. extern "C", 告诉C++编译器,用C链接,也就是不要mangle函数名。
    4. 要注意数组与指针不同, 数组extern int a[]; 指针用 extern int *b;
4. alias indent='indent -ts1 -bli0 -cli2'

5. gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
      pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用。
      /usr/lib/pkgconfig/gtk+-2.0.pc
6.  typedef 定义普通函数
    typedef int FUN(int age, char* name);
    FUN create_student
    same with:
    int create_student(int age, char* name);
    在一些函数具有相同参数的时候可以简化函数定义.
7.  gcc -l参数和-L参数
   -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?-lname,在连接时,装载名字为“libname.a”的函数库:-lm表示连接名为“libm.a”的数学函数库。就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了
   好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)
   放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。再比如我们把libtest.so放在/aaa/bbb/ccc目录下,那链接参数就是-L/aaa/bbb/ccc -ltest
   -include用来包含头文件,但一般情况下包含头文件都在源码里用#include xxxxxx实现,如果不在源码中include, gcc -include test.h. -include参数很少用。-I参数是用来指定头文件目录,/usr/include目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/include里我们就要用-I参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude参数了,如果不加你会得到一个"xxxx.h: No such file or directory"的错误。-I参数可以用相对路径,比如头文件在当前目录,可以用-I.来指定。上面我们提到的--cflags参数就是用来生成-I参数的
   
分享到:
评论

相关推荐

    sun.misc.base64decoder.jar下载

    sun.misc.BASE64Encoder找不到jar包的解决方法? 在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:  Access restriction: The type BASE64Decoder is not ...

    2018红帽线上MISC----OS_038c9291c8039792d1aad140f6664671.iso

    2018红帽线上MISC(听说你们喜欢手工爆破)文件----OS_038c9291c8039792d1aad140f6664671.iso

    misc-rfid-linux2.6.32.tar.gz

    1. **rc522.c** 和 **rc522.c~**:这些文件是C语言编写的源代码,很可能实现了与MFRC522芯片交互的驱动程序。MFRC522是一种常见的RFID读写器芯片,用于读取和写入RFID标签。".c~"通常是Unix/Linux系统中编辑器(如...

    ctf misc 杂项 snow隐写加解密

    ctf misc 杂项 snow隐写加解密工具 压缩包中有snow隐写工具帮助手册,值得下载。 SNOW.EXE -C 2.txt Windows下SNOW隐写工具 snow.exe -C -m "被隐藏的信息" -p 密码 "文件名" snow -C -m "I am lying" -p "hello ...

    STM32F10x中断例程

    文件: misc.c misc.h main.c ALL_Includes.h stm32f10x_exti.c 功能:中断服务程序 注意:使用时LED灯接限流电阻(普通红灯:2.2K欧),GPIOA3必须接下拉电阻(10K欧),否则容易误进中断 ...

    3种模式的按键驱动(cdev misc platform).rar

    在`driver_key_misc.c`文件中,使用`misc_register`和`misc_unregister`来注册和注销混杂设备。混杂设备的设备号由内核自动分配,减少了开发者的工作。同样,按键事件的中断处理逻辑会在此驱动中实现。 3. Platform...

    apache-commons-codec-1.4.jar和sun.misc.BASE64Encoder.jar

    在Java中,`sun.misc.BASE64Encoder`和`sun.misc.BASE64Decoder`是用于处理BASE64编码和解码的类,它们位于`sun.misc`包下,这是一个非公开的、由Sun Microsystems提供的包,主要用于JVM内部使用。 然而,需要注意...

    misc_m0usb_7abff1b86ba3410cb07ecfb87234a4d6.zip

    这可能涉及到C、C++、Python或其他编程语言。 2. **逆向工程**:如果源代码是加密或混淆的,可能需要使用反汇编器或动态调试器来理解其执行流程。 3. **漏洞挖掘**:查找可能的安全漏洞,如缓冲区溢出、格式字符串...

    android系统写MISC分区.doc

    ```c int main(int argc, char argv) { //定义三种动作类型 enum { UNCRYPT, SETUP_BCB, CLEAR_BCB } action; const char* ... } ``` uncrypt函数定义了三种动作类型,包括UNCRYPT、SETUP_BCB和CLEAR_BCB。在...

    stm32标准例程库函数.zip_misc.h_startup_stm32 模板_stm32f10x v3.5.0_stm32标

    标准例程-V3.5库函数版本\keilkill.bat 标准例程-V3.5库函数版本\实验0 Template工程模板\CORE\core_cm3.c 标准例程-V3.5库函数版本\...标准例程-V3.5库函数版本\实验0 Template工程模板\STM32F10x_FWLib\inc\misc.h

    CTF工具之QR_research二维码(misc).rar

    在IT安全领域,尤其是网络安全竞赛(Capture The Flag, 简称CTF)中,"misc"类题目通常涵盖各种不同类型的问题,包括但不限于密码学、逆向工程、取证分析、Web安全以及我们的主题——二维码(QR码)研究。...

    misc_register、 register_chrdev 的区别总结1

    ```c static struct miscdevice my_misc_dev = { .minor = MISC_DYNAMIC_MINOR, .name = "my_device", .fops = &my_fops, }; ``` 然后,通过`misc_register(&my_misc_dev)`将其注册到内核。 总的来说,`misc_...

    spear-misc.rar_Texas

    1. da8xx.c 和 da8xx.h:这是一对C语言源代码文件和对应的头文件,通常用于实现和定义与DA8xx处理器相关的函数、结构体和常量。da8xx.c可能包含了驱动程序的实现,处理与DA8xx硬件交互的细节,而da8xx.h则提供了该...

    DES.rar_C#_C++_c_des算法_getopt

    DES算法的C源码 benchmark.c des.c descalc.c descert.c descycle.c getopt.c getpass.c main.c misc.c radlogin.c uudecode.c uuencode.c

    C语言头文件 TRACE

    C语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 TRACEC语言头文件 ...

    CTF工具之010editor(misc).rar

    9. **数据结构导出**:分析后的结果可以导出为C、C++、Java或其他编程语言的结构体,方便在代码中直接使用。 在CTF比赛中,010 Editor常用于处理以下任务: - **逆向工程**:分析可执行文件的结构,寻找隐藏的函数...

    Misc_keiluvision3_blink_

    标题 "Misc_keiluvision3_blink_" 暗示我们正在处理一个使用Keil uVision3集成开发环境(IDE)的项目,该项目专注于LED闪烁功能。这个项目可能是一个简单的嵌入式系统教程或者示例代码,用于演示如何在微控制器上...

    Misc GIFs-crx插件

    Misc GIFs-crx插件是一款专为方便用户管理和使用GIF图像而设计的浏览器扩展程序。这款插件特别适用于那些经常在论坛、社交平台或聊天应用中分享动态图像的用户,如PHPBB论坛用户。它集成了大量的MISCers(可能是特定...

    pcm_misc.rar_The Given

    在“pcm_misc.c”这个源代码文件中,我们可以预见到可能会包含一些处理PCM数据的函数,比如读取、写入、转换或分析PCM数据的代码。这些函数可能涉及到对PCM样本的位操作,例如位左移(用于调整采样精度)或位运算...

Global site tag (gtag.js) - Google Analytics