[閒聊] 如何禁用特定的STL容器或函式

看板C_and_CPP作者 (正港台灣人)時間7年前 (2016/12/08 11:46), 編輯推噓5(5022)
留言27則, 12人參與, 最新討論串1/1
大家好, 我從以前就有一直這個問題, 在大學裡面像是資料結構、演算法這種課程, 一定會希望學生自己去實作一些基礎的功能, 而這些功能又常是STL等等函式庫裡有提供的, 如果作業的批改當中沒有辦法一一的去看學生的code, 要如何避免學生偷懶去使用某些特定的container或function? 最簡單最直觀的方法,就是針對每一份code去移除code裡面這些被include的header, 甚至去把那些lib直接從原本的路徑移開或者重新命名。 可是有什麼比較有效率的做法嗎? 例如在makefile當中去禁止, 或者用寫一些可以讓編譯器預處理掉這些lib的code。 不知道大家有沒有什麼經驗? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.85.135 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481168767.A.2B5.html

12/08 12:03, , 1F
#ifdef _GLIBCXX_VECTOR 就 #error 之類的?
12/08 12:03, 1F

12/08 12:49, , 2F
114我不是很想告訴你,可以加-D_GLIBCXX_VECTOR 之類的
12/08 12:49, 2F

12/08 12:49, , 3F
把一些東西弄掉
12/08 12:49, 3F

12/08 12:55, , 4F
如果學生直接找source code貼上呢?
12/08 12:55, 4F

12/08 13:15, , 5F
有人這樣幹過啊,可是那位本來就很強,要不要認真實作是
12/08 13:15, 5F

12/08 13:15, , 6F
學生的事,一直搞下去也只會變成補洞大會而已,也有可能
12/08 13:15, 6F

12/08 13:15, , 7F
把其他正常的Code搞爛
12/08 13:15, 7F

12/08 13:17, , 8F
我之前當助教,程式作業都會一個一個看耶QQ
12/08 13:17, 8F

12/08 13:19, , 9F
限定只能寫C
12/08 13:19, 9F

12/08 13:23, , 10F
會有天才學生寫出神CODE來搞助教的嗎
12/08 13:23, 10F

12/08 13:34, , 11F
我大一的時候讀了幾本深入剖析 stl 之類的書 資結作業我
12/08 13:34, 11F

12/08 13:34, , 12F
都比照 SGI stl 的寫 還記得不過是一個 linked list 我寫
12/08 13:34, 12F

12/08 13:34, , 13F
了兩天 總共 1100 多行 XD
12/08 13:34, 13F

12/08 13:35, , 14F
有的~
12/08 13:35, 14F

12/08 13:36, , 15F
當時其實還滿擔心助教說我是複製貼上 stl 的,不過還好沒
12/08 13:36, 15F

12/08 13:36, , 16F
12/08 13:36, 16F

12/08 14:03, , 17F
撰寫簡易讀取資料夾底下程式檔案逐行比對之程式。
12/08 14:03, 17F

12/08 17:03, , 18F
這種簡單的批次文字掃描用grep吧
12/08 17:03, 18F

12/08 17:03, , 19F
不然用notepad++也可以對整個目錄搜尋 不需要自己看
12/08 17:03, 19F

12/08 18:24, , 20F
感謝大家的意見 貼上整個source code的這個 能成功也只
12/08 18:24, 20F

12/08 18:24, , 21F
能說本來就很厲害XD
12/08 18:24, 21F

12/11 13:26, , 22F
有辦法 但是出作業的人負擔會比較大
12/11 13:26, 22F

12/11 13:28, , 23F
你寫好一個template框架 然後要求學生去Inheritance這個
12/11 13:28, 23F

12/11 13:28, , 24F
框架去擴充完成作業
12/11 13:28, 24F

12/11 13:30, , 25F
甚至連main()裡面都寫好,要求這邊不能動
12/11 13:30, 25F

12/11 13:32, , 26F
不過這樣已經有點TDD味道了
12/11 13:32, 26F

12/11 17:40, , 27F
Coursera有些C++的課就是這樣弄的。
12/11 17:40, 27F
文章代碼(AID): #1OIDT_Ar (C_and_CPP)