[C#] macro equivalents for __FILE__ , __LINE__

:) Din pacate C# nu suporta aceste macrouri.

Dar este posibil a se folosi Environment.StackTrace – care afiseaza stiva curenta a programului care se executa

class Environment {
  public static string StackTrace {get;}
}

Exemplu:

public static void Main()
{
   Console.WriteLine("StackTrace: '{0}'", Environment.StackTrace);
}

astfel, daca compilez si execut in visual studio, as avea un astfel de rezultat :

StackTrace: '   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at stacktrace.Program.Main(String[] args) in C:\projects\stacktrace\stacktrace\Program.cs:line 11'

iar daca se sterge fisierul cu informatii de debug ( = fisierul cu formatul nume_executabil.pdb ) un posibil rezultat ar putea fi :

StackTrace: '   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at stacktrace.Program.Main(String[] args)'

aceste linii returnate de StackTrace au un format bine definit, astfel ca se pot procesa automat usor.

mai multe detalii aici

[php] & macros

venind din mediul de programare C / C++, am inceput sa caut prin php asemanari in legatura cu variabilele / constantele / macrourile foarte utile : __FILE__ , __LINE__ . In C, ele sunt numite macrouri, pentru ca la momentul compilarii se inlocuieste continutul acestor macrouri cu informatii shtiute la compilare doar, apoi in timpul executiei programului ele apar deja ca constante. Se pare ca dezvoltatorii php au vrut sa faca viata mai placuta celora care trec la php… si acestor macrouri le-au zis pur si simplu : “magic constants“, pentru ca macrouri nu pot fi numite datorita faptului ca php e un limbaj de scripting.

Si un exemplu de utilizare a acestor “macrouri” :

1 <?php
2     $fin = @fopen( 'file.txt', 'r' );
3     if ( ! $fin ) {
4         echo "Error opening file for read ";
5         echo __FILE__ . " : " . __LINE__;
6     }
7 ?>

a carui output este :

Error opening file for read @ /media/data1/WEB/index.php : 5

end.