回覆列表
  • 1 # 雲握樓主

    這還用問嗎?雖然c語言對大小寫敏感。但是編寫成(複雜的)作業系統的時候,敏不敏感,就看開發決策者的喜好或權衡了。作為系統肯定是想盡量做得簡單易用(傻瓜)化一點,以便於推廣和吸引使用者。按照一般的理解,大寫小寫是一樣的意思,不讓一部分使用者在給檔案改名的時候抓狂,也是開發者考慮之一吧。

  • 2 # 傳統文化互動創新

    兩者毫無關聯。c是開發語言,開發出的軟體產品是什麼特徵由產品經理決定,Windows檔名不區分大小寫是由歷史問題造成, 因為Windows前身DOS是不區分大小寫的, windows 為相容DOS。

  • 3 # 我是吳哥

    因為是個歷史遺留問題。。。

    就像題主不能在Windows下新建名為NUL、CON這樣的檔案一樣

    一開始DOS使用的是FAT12、FAT16這樣的檔案系統,遵循著普遍的8.3的檔案命名規則,例如一個完整名為Micro$oft.txt的檔案在8.3的命名規則下會變成MICRO$~1.TXT[1](新作業系統向後相容古舊的8.3檔名的形式),哪怕FAT32支援長檔名了(有理由相信完全可以在此時支援case-sensitivity),然而為了相容性還是砍掉了[2] 。

    到了NTFS的情況也類似,事實上NTFS裡有個名為$Upcase的元檔案(filesystem metafile),然後文件裡(維基給的)是這麼黑屁的

    A table of Unicode uppercase characters for ensuring case-insensitivity in Win32 and DOS namespaces.

    wtm能說啥呢。。。

    PS:POSIX namespace是支援大小寫敏感的,這點看CreateFile[3][4][5]這個API的文件就能一目瞭然。

    還有在Linux下的NTFS也是支援大小寫敏感的,所以嘛,所以這就是巨硬為了相容性而(故意)做出的妥協(笑),和用C語言沒啥關係。

    參考

    ^這點,可以在32位的系統上開啟命令列(win8之前,因為win8之後的32位系統就預設關閉了對NTVDM的支援),然後輸入debug,再輸入q退出,會看到路徑名的顯示變成了自己說到的8.3的模式^因為要支援DOS,Win9x是以DOS為核心的(使用的是名為VxD的驅動模型,其中對win32的支援是由vmm32.vxd這個VxD驅動提供的),於是乎win9x的系統檔案理所當然的與DOS同處在一個分割槽內(自然檔案系統也是相同的)^CreateFileW https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew^在裡邊dwFlagsAndAttributes這個引數下有個名為FILE_FLAG_POSIX_SEMANTICS的值^至於為啥用W而不是用A的版本,是因為CreateFileA會在內部呼叫CreateFileW的版本。

    作者:知乎使用者來源:知乎

  • 中秋節和大豐收的關聯?
  • 紅鯽魚為什麼會變黑呢?