- 博客(3)
- 收藏
- 关注
原创 gcc编译编译选项如何在各阶段起作用
经过实验可以发现 -g -Wall -input-charset=utf-8 -fexec-charset=GBK都是在汇编阶段起作用。gcc -E -Wall -finput-charset=utf-8 -fexec-charset=GBK 源文件.c -o 源文件.i。gcc -S -finput-charset=utf-8 -fexec-charset=GBK 源文件.i -o 源文件.s。然后测试-finput-charset=utf-8 -fexec-charset=GBK。
2024-07-26 10:33:32 247
原创 C和C++混合编程出现的问题
因为源文件什么也没改,只是改了一下源文件扩展名,按照不同标准编译罢了。所以,能够确定时编译标准的问题。在网上查了查,说应改在头文件中加extern "C"。有很多回答都是这样,但是说明不详细不准确。下面我记录自己最终的解决方法,并说明一下。在编程时突然有了把C源文件和C++源文件混合编程的想法。据查询是因为C和C++编译时命名方式有不同,造成函数名找不到的原因。可以用extern "C"{}把C头文件扩起来表示这些头文件是C头文件。在包含C库文件的地方原来应该时这样的。在包含C头文件的地方直接这样。
2024-07-25 13:21:19 208
原创 C语言使用宏实现函数缺省形参
就想用C语言来实现。在实现多项式加法时,需要多项式链表是有序链表,所以就设计了链表排序函数。然后就想到如果给排序函数设置默认排序方式,也可以输入排序方式标志事项不同方式的排序。##符号把1,和__VA_ARGS__连接成一个符号,这个符号组成一个逗号运算。逗号运算的返回值是逗号右侧的值,如果逗号右侧没有值,返回左侧的值。所以,逗号,左侧1的值就是默认值。宏中的...代表可变参数, __VA_ARGS__代表你输入的可变部分参数值。宏中的x,y,等就是宏变量。在宏展开时会被函数中相应位置的变量或常量代替。
2024-07-25 12:53:29 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人