• 封装so库时的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CC=gcc

SRCS=mylib.c

OBJS=$(SRCS:.c=.o)

EXEC=libmylib.so

start: $(OBJS)
$(CC) -o $(EXEC) $(OBJS) -shared

.c.o:
$(CC) -o $@ -c $< -fPIC

clean:
rm -rf $(OBJS)
  • 准备工作

    • main.cpp

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      #include <iostream>
      #include "a.h"

      using namespace std;
      int main()
      {
      test();
      cout << "hello world" << endl;
      return 0;
      }
    • a.h

      1
      2
      3
      4
      5
      #ifndef AH_H
      #define AH_H
      void test();

      #endif
    • a.cpp

      1
      2
      3
      4
      5
      6
      #include <stdio.h>

      void test()
      {
      printf("I am test\n");
      }

宽字符

为了更好地支持Unicode,C11引入额外的宽字符类型char16_t和char32_t。在头文件uchar.h中,它们被定义为无符号整数类型。