Since modules operate at the language level, they need to operate on this notion, which precludes importing by file.
Since modules operate at the language level, they need to operate on this notion, which precludes importing by file.
Also, going to this level of trouble to support systems that don't have files seems... odd. Targets that don't have files, that I can totally understand. But compiler toolchains that don't have the notion of a file? That sounds obscure beyond obscure. I'm surprised such a system would be a compilation host instead of a cross-compile target.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n421...
int main(int argc, char *argv<::>)
<%
if (argc not_eq 1 and argc not_eq 2) <% return 1; %>
return 0;
%>
https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#CTo me this seems like a weird take on accessibility. In order to accommodate that one OS that has some serious disabilities, everyone else has to suffer the consequences. Why not build a ramp for that one OS, and build stairs for everyone else?
Still trigraphs were removed in the end; if there is enough support the committee is willing to break backward compatibility.
Admittedly that's not just a problem with old mainframes. Any system supporting file aliases (be it hardlinks, symlinks or the same FS mounted at several locations for instance) would be tricky to handle.
I always thought #pragma once was a bad idea for that reason, header guards with unique IDs don't require any compiler magic and are simple to reason about without having to read the standard or compiler's docs to figure out how it operates.