Präprozessor - Behind the scenes
Wer immernoch nicht genug vom Präprozessor und dessen Funktionsweise hat kann sich in diesem Video mal im Detail anschauen, wie der verarbeitete Quellcode aussieht, der schließlich zum Compiler geht.
Video
Code
Als Demonstration dienen wieder die beiden Dateien logging.hpp und test.cpp
vom vorherigen Video.
logging.hpp
#ifndef LOGGING_HPP
#define LOGGING_HPP
#ifndef LOGTARGET
#define LOGTARGET std::cout
#endif // LOGTARGET
#ifdef NDEBUG
#define TRACE(msg, file, line)
#else
#define TRACE(msg, file, line) LOGTARGET << "[TRACE] " << \
msg << " (at " << file << ":" << line << ")\n"
#endif //NDEBUG
#define ENTER(fkt) TRACE("ENTER " fkt, __FILE__, __LINE__)
#define EXIT(fkt) TRACE("EXIT " fkt, __FILE__, __LINE__)
#define CALL(fktcall) TRACE("CALL " #fktcall, __FILE__, __LINE__); fktcall;
#endif // LOGGING_HPP
test.cpp
#include <iostream>
#include "logging.hpp"
void test() {
ENTER("test");
std::cout << "Testing\n";
EXIT("test");
}
int main(int argc, char * argv[]) {
ENTER("main(int,char*[])");
std::cout << "Hello world!\n";
CALL(test());
EXIT("main(int,char*[])");
}
Erklärung
Später...