tqcq c9c4754e62
All checks were successful
modern-c / build (Debug, aarch64-linux-gnu) (push) Successful in 16s
modern-c / build (Debug, mipsel-linux-gnu) (push) Successful in 11s
modern-c / build (Debug, arm-linux-gnueabihf) (push) Successful in 15s
modern-c / build (Debug, host.gcc) (push) Successful in 11s
modern-c / build (Release, aarch64-linux-gnu) (push) Successful in 11s
modern-c / build (Release, arm-linux-gnueabihf) (push) Successful in 11s
modern-c / build (Release, host.gcc) (push) Successful in 12s
modern-c / build (Release, mipsel-linux-gnu) (push) Successful in 12s
feat: add atomic,mutex,shared_ptr
2025-08-07 16:55:40 +08:00
2025-08-07 16:55:40 +08:00
2025-08-07 16:55:40 +08:00
2025-08-07 16:55:40 +08:00
2025-08-07 16:55:40 +08:00

一个更加现代化的C库

atomic

支持原子操作的整型

  • mc_atomic_int8_t
  • mc_atomic_int16_t
  • mc_atomic_int32_t
  • mc_atomic_int64_t
  • mc_atomic_uint8_t
  • mc_atomic_uint16_t
  • mc_atomic_uint32_t
  • mc_atomic_uint64_t
#include <modern-c/prelude.h>
#include <stdio.h>

int main() {
    mc_atomic_int32_t a1 = mc_atomic_int32_t_init();
    mc_atomic_int32_t a2 = mc_atomic_int32_t_init_with_value(11);
    printf("%d %d\n", a1->load(a1), a2->load(a2));
    a1->store(a1, 12);
    printf("%d %d\n", a1->load(a1), a2->load(a2));
    mc_atomic_int32_t_destroy(&a1);
}

mc_ptr

智能计数指针

#include <modern-c/prelude.h>
#include <stdio.h>

void my_free(void*p) {
    free(p);
}

int main() {
    // nullptr
    mc_ptr p1 = mc_ptr_init();
    // 默认的释放函数为free
    mc_ptr p2 = mc_ptr_init_with_value(malloc(sizeof(int)), NULL);
    // 自定义的释放函数
    mc_ptr p3 = mc_ptr_init_with_value(malloc(sizeof(int)), (on_destroy_fn_t)my_free);
    p2 = p3->assign(&p3, &p2);
}
Description
No description provided
Readme 203 KiB
Languages
C++ 96.5%
C 3.3%
CMake 0.2%