C文件没有#?

use*_*424 7 c

假设您给出一个C source file包含最大值的单个.300行代码.

假设文件在实现多个函数时,其中包含字符"#"(意思是#include,没有任何统计信息,也没有其他语句中包含"#"的语句).

我的问题是,上述保证文件进行任何I/O吗?它能保证文件不能(比方说)擦除硬盘内容,或做其他可疑的东西吗?

(我应该得到100-200个单个C文件,(如上所述)不包含其中的字符#.我被要求编写一个简单的程序,它将以编程方式检查一个C source file没有#可能涉及I/O 的单个文件,访问网络等).

鉴于#不允许使用任何语句- 编码器可以在这样的C文件中包含什么是最糟糕的代码,可能会损坏运行它的人的系统?

知道没有检查会产生100%的准确性 - 但至少有兴趣做一些基本的检查,如果找到一些表达式/关键字会引发一个红旗.有什么想法的想法?

Shi*_*zou 12

不,它不能保证.你可以生成扩展所有包含和宏的代码,你可以把它变成一个巨大的文件,然后编译它...那个文件,不会包含任何预处理器指令,虽然它可以做任何事情,通常C可以做在一个系统上.


Caj*_*uke 5

如果原始编码器包括内联汇编,他们可以做任何他们喜欢的事情,而无需导入任何库.


Gio*_*gio 5

可以将标准文件类型和函数(例如FILE,fopen(),fprintf(),flocse())的定义复制并粘贴到C文件中.这样就不需要包含了,当文件被编译并链接到适当的库时,它将能够执行I/O.