无论学习哪门语言,几乎都无一例外的从Hello, world入手, 今天我也不例外。

写这篇文章的目的在于,我们在用XCode或者VS写代码时,几乎都是通过图形化工具来进行编译,链接的, 运行。 长期以来,却不知道到底这些图形化工具帮助我们做了哪些事, 以及出了一些系统环境设置问题后,完全无从下手。


Mac系统是基于Unix内核的图形化操作系统, 所以使用terminal进行编程实则为Unix下的编程,这里只演示一种最为简单方式。

1.       首先打开terminal应用,通过cd命令到你想创建这个文件的地方。

2.       然后打开nano编辑器,如nano helloworld.c, 这样就打开了nano编辑器,并自动给将要编写的文件命名为helloworld.c

3.       在nano编辑器中输入

#include <stdio.h>

int main ()

{

      printf(”jackysay hello to you\n”);

      return 0;

}

4.       然后在nano中按快捷键control+x,  退出nano编辑器, nano会提示进行保存, 输Y即可

5.       在terminal中输入gcc helloworld.c –o xxx, 这样就生成了一个可以运行的xxx程序

6.       输入./xxx, 来运行这个程序,可以看到” jacky say hello to you”输出在terminal的屏幕上


这里我有两个疑问:(望路过的高人给予解答)

1。至于#include <stdio.h>, 这行代码包含了这个文件, 但我在Mac下全盘搜索,却并没有搜索到stdio.h这个文件, 这是为何?

2。 就算上面搜到这个stdio.h文件, 那么在接下来的代码中调用printf这个函数, 这个函数的实现文件是在哪里呢? 估计应该是一个库文件, 那这个库文件又是在哪里呢?又或是没有这个库文件, 只在像Java虚拟机概念中, 用户需要保证运行该程序的机器上一定会安装这个stdio.h所对应的库文件?从而省略了编译出来的程序中包含库文件,从而省略了编译出的程序大小?


GitHub 加速计划 / term / terminal
8
0
下载
The new Windows Terminal and the original Windows console host, all in the same place!
最近提交(Master分支:4 个月前 )
ba87ab52 The conhost window uses the window message WM_GETDPISCALEDSIZE to scale its client rect non-linearly. This is done to keep the rows and columns from changing when the window changes (font sizes scale non-linearly). If you size the window such that the text perfectly fits the width (and cursor is on the first row of the next line), dragging the window between monitors with different DPIs should NOT change how much of the text fits on each line. https://learn.microsoft.com/en-us/windows/win32/hidpi/wm-getdpiscaledsize The current code is assuming that the size that should be scaled is the current window size. This is sometimes the case, for example when dragging a window between monitors, but it is not always the case. This message can sometimes contain a size that is different from the window's current size. For example, if the window is maximized, minimized, or snapped (the size in these cases is the normal rect, or restore rect). The msdn page above does (now) call this out, though it is possible that this was added after this conhost code was added... > The LPARAM is an in/out pointer to a SIZE struct. The _In_ value in the LPARAM is the pending size of the window after a user-initiated move or a call to SetWindowPos. If the window is being resized, this size is not necessarily the same as the window's current size at the time this message is received. This incorrect assumption can cause the conhost window to be unexpectedly large/small in some cases. For example: 1. Requires two monitors, set to different DPIs. 2. Size window somewhat small, and type text to fit exactly the width of the window, putting cursor on first row of next line. 3. Win+Left (or otherwise snap/arrange the window). 4. Win+Shift+Left (migrates the window to the other monitor) 5. Win+Shift+Down (restore window, can also click maximize caption button twice, maximizing then restoring) Expected: The window should restore to the original logical size, with the text perfectly fitting one line. Actual: The window restores to another size; it is the snapped size on the original monitor (the size of the window at the time it was changing DPI, in step 4 above). ## References and Relevant Issues This message (WM_GETDPISCALEDSIZE) is not widely used, but it is used by dialogs (user32!CreateDialog), since they also size their windows using font sizes. The code in this change borrows from the code in the dialog manager, user32!GetDialogDpiScaledSize. ## Detailed Description of the Pull Request / Additional comments The WM_GETDPISCALEDSIZE message contains the new DPI and the new size, which is an in/out parameter. It starts as the new window size, scaled to the window's current DPI, and is expected to be scaled to the new DPI. The client area (the part with the text) is NOT scaled linearly. For example, if the font at 100% DPI has a height of 7, it could have a height of 15 at 200%. (And if it did have a height of 14, linearly scaled, it would surely not be linearly scaled at 150%, since fonts cannot have a height of 10.5.) To pick the right size, we need to resolve the font at the new DPI and use its actual size to scale the client area. To keep the amount of text in the window the same, we need to remove the non-client area of the window (caption bars, resize borders, etc). The non-client area is outside the area with the text, and its size depends on the window's DPI and window styles. To remove it and add it back, we need to: - Reduce the provided window rect size by the non-client size at the current DPI. - Scale the client size using the new/old font sizes. - Expand the final size by the non-client size at the new DPI. 4 天前
3e669029 Oops, it didn't support more than 100 items! 6 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐