Autor | Zpráva | ||
---|---|---|---|
SeparateSK Profil |
#1 · Zasláno: 10. 3. 2013, 21:37:44 · Upravil/a: Moderátor (editace znemožněna) 10. 4. 2013, 20:54:16
Už ste skúšali predefinovať if, else, while?
V php to nejde: <?php define("ak",if); define("inak",else); ak(2<3) echo "Funguje?"; inak echo "Nefunguje"; ?> #include <iostream> #define ak if #define inak else int main(){ ak(2<3) std::cout<<"2 je menej ako 3"; inak std::cout<<"2 je viac ako 3"; std::cin.get(); } Moderátor Petr ZZZ: Vyčleněno z Hřiště. Příště prosím založ samostatné vlákno rovnou – vůbec netuším, jestli se vyčleněním někde něco neporouchalo. :-)
|
||
juriad Profil |
C++ lze chápat jako mix dvou jazyků. Jako první se při kompilaci provádějí nad zdrojákem preprocesorové instrukce (to je vše co začíná znakem #) a nahrazují se výskyty takto definovaných maker. Nahrazování funguje čistě textově.
Tedy vlastní C++-ový kompilátor dostane až kód: // 17500 řádků includovaných z iostream.h int main(){ if(2<3) std::cout<<"2 je menej ako 3"; else std::cout<<"2 je viac ako 3"; std::cin.get(); } V php jde o úplně jiný mechanismus. define definuje konstrantu, která za žádných okolností nemůže být chápána jako konstrukt jazyka. Nechceme toto vyčlenit do běžného vlákna? |
||
SeparateSK Profil |
juriad:
„Nechceme toto vyčlenit do běžného vlákna?“ Načo? Však ide iba o "perličku" z programovania v inom jazyku. Inak aj enum v PHP chýba a občas je dosť užitočný v iných jazykoch. <?php function enum(){ $args=func_get_args(); $c=count($args); $enstart=0; for($i=0;$i<$c;$i++,$enstart++){ if(gettype($args[$i])=="array" && is_numeric($args[$i][1])){ $enstart=$args[$i][1]; define($args[$i][0],$enstart); } else define($args[$i],$enstart); } } enum(array(Cervena,255),Zelena,array(Modra,355),Siva); echo "Cervena: ".Cervena."<br />"; echo "Zelena: ".Zelena."<br />"; echo "Modra: ".Modra."<br />"; echo "Siva: ".Siva."<br />"; ?> Cervena: 255 Zelena: 256 Modra: 355 Siva: 356 Len som chcel, aby sa to podobalo enum-u v iných prog. jazykoch. |
||
Časová prodleva: 11 let
|
0