C语言编程技巧有哪些可以分享?

2026-04-28 12:430阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1348个文字,预计阅读时间需要6分钟。

C语言编程技巧有哪些可以分享?

最近在查阅C++的方法重载,于是对C++产生了兴趣。

最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎么玩的,很多朋友应该知道 C 是不支持重载的,比如下面的代码就会报错。

#include <stdio.h> int say() { return 1; } int say(int i) { return i; } int main() { say(10); return 0; }

从错误信息看,它说 say 方法已经存在了,尴尬。。。

一:为什么 C 不支持

要想寻找答案,需要了解一点点底层知识,那就是编译器在编译 C 方法时会将 函数名 作为符号添加到 符号表 中,这个 符号表 就是 call 到 say方法字节码 中间的一个载体,画个图大概就是这样。

简而言之,call 先跳转到 符号表, 然后再 jmp 到 say 方法,问题就出现在这里,符号表是一种类字典结构,是不可以出现 符号 相同的情况。

阅读全文

本文共计1348个文字,预计阅读时间需要6分钟。

C语言编程技巧有哪些可以分享?

最近在查阅C++的方法重载,于是对C++产生了兴趣。

最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎么玩的,很多朋友应该知道 C 是不支持重载的,比如下面的代码就会报错。

#include <stdio.h> int say() { return 1; } int say(int i) { return i; } int main() { say(10); return 0; }

从错误信息看,它说 say 方法已经存在了,尴尬。。。

一:为什么 C 不支持

要想寻找答案,需要了解一点点底层知识,那就是编译器在编译 C 方法时会将 函数名 作为符号添加到 符号表 中,这个 符号表 就是 call 到 say方法字节码 中间的一个载体,画个图大概就是这样。

简而言之,call 先跳转到 符号表, 然后再 jmp 到 say 方法,问题就出现在这里,符号表是一种类字典结构,是不可以出现 符号 相同的情况。

阅读全文