makefile的基本语法
hello : main.o message.o
gcc main.o message.o -o hello
//当main.o或者message.o发生变化时,执行gcc main.o message.o -o hello
main.o : main.c //将main.c文件编译成main.o链接文件,方便管理
gcc -c main.c
message.o : message.c
gcc -c message.c
clean:
rm -f *.o hello
补充知识
assert
作用:如果条件为假,程序将终止运行,并输出一个错误信息。
#include <stdio.h>
#include <assert.h>
int main() {
int a = 10;
assert(a == 10); // 这个断言会成功,因为a确实等于10
printf("a的值是10。\n");
int b = 5;
assert(b == 10); // 这个断言会失败,因为b不等于10
printf("b的值是10。\n");
return 0;
}
a的值是10。
Assertion failed: b == 10, file D:\VS代码\solution\make项目\main.cpp, line 10
memset
void *memset(void *s, int c, size_t n);
作用:memset
函数会将 n
个字节的内存块从地址 s
开始设置为值 c
。
#include <string.h>
#include <stdio.h>
int main() {
char buffer[10];
// 将buffer数组的前5个字节设置为'A'
memset(buffer, 'A', 5);
// 打印buffer数组的内容
for (int i = 0; i < 5; i++) {
printf("%c", buffer[i]);
}
printf("\n");
return 0;
}
AAAAA
try/catch语法
try {
// 尝试执行的代码块
// 如果抛出了异常,将跳转到相应的catch块
}
catch (exception_type1 param1) {
// 当抛出的异常类型为exception_type1时执行的代码块
}
catch (exception_type2 param2) {
// 当抛出的异常类型为exception_type2时执行的代码块
}
catch (...) {
// 捕获所有其他类型的异常
}
#include <iostream>
#include <stdexcept>
#include <string>
int main() {
try {
// 尝试执行的代码块
throw std::runtime_error("An error occurred"); // 抛出一个runtime_error异常
}
catch (const std::runtime_error& e) {
// 捕获std::runtime_error类型的异常
std::cout << "Caught a runtime_error: " << e.what() << std::endl;
}
catch (const std::exception& e) {
// 捕获所有派生自std::exception的异常
std::cout << "Caught an exception: " << e.what() << std::endl;
}
catch (...) {
// 捕获所有其他类型的异常
std::cout << "Caught an unknown exception" << std::endl;
}
return 0;
}
e.what()代表“An error occurred”
less
默认情况下,std::less<T>
用于比较时,会使用 operator<
来比较两个对象。
#include <iostream>
#include <set>
#include <functional>
int main() {
std::less<int> comp; // 创建一个比较函数对象,用于比较 int 类型的对象
int a = 5;
int b = 10;
if (comp(a, b)) {
std::cout << a << " is less than " << b << std::endl;
}
else {
std::cout << a << " is not less than " << b << std::endl;
}
return 0;
}