s_ static variabel m_ modul variabel
g_
rVal1
oObj1
pPoint1
IClass För Interface
Inkludera lokala filer först Subfoldrar samma projekt Andra projekt System includes
std::lock_guard< std::recursive_mutex > oLock( g_InterruptCounter_mutex );
Need to use -Wl,–whole-archive -lpthread -Wl,–no-whole-archive See http://sourceware.org/ml/libc-alpha/2007-10/msg00005.html Also see this for reasons not to do it: http://stackoverflow.com/questions/10390584/force-gcc-to-static-link-e-g-pthreads-and-not-dynamic-link
https://svn.boost.org/trac/boost/ticket/7140
28c28 < #elif defined(__GNUC__) && defined(__arm__) --- > #elif defined(__GNUC__) && defined(__arm__) && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) 57c57 < #elif defined(__GNUC__) && defined(__arm__) --- > #elif defined(__GNUC__) && defined(__arm__) && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
Name | Description |
---|---|
Aggregator | An object that aggregates data or functionality |
Builder | Builds things. For example and object that takes a binary stream and creates an object. |
Command | Usually used in protocols to encapsulate a command. Basically a function name and data parameters. |
Container | A place to store things, usually data objects. Note the difference to Pool, which is a place to store things not in use. |
Converter | An object that converts data or other objects. |
Data | A pure data object (must not contain any functionality, except simple getters and setters if needed). |
Factory | An object that creates other objects. |
Node | A node object, usually in a Tree. |
Parser | An object that parses something. A builder will most likely use a parser. |
Policy | An object that will change the behavior of another object. |
Pool | A pool of things. A place to store them when not in use. Note the difference to Contain, which is a place to store data objects. |
Reader | An objects that reads things, usually from storage and that a Writer object has written before. |
State | An object that keeps a state for something |
Supervisor | An object that monitors other objects. |
Synchronizer | An objects that has the responsibility of keeping different parts of the system synchronized. |
Writer | An object that writes things to storage, usually. |
Name | Description |
---|---|
Base | Example, CommandBase. Just use Command instead |
Handler | Same as Manager, too generic |
Manager | Too generic, probably bad coding. |
Object | Everything is objects… so what does this mean? |
Name | Description |
---|---|
Listener | |
Processor | An object that processes something. An example might be a UserLoginProcessor. |
Event | Function that will receive a call, this should be used for when you have multiple targets |
Callback | Function that will receive a call, used for single target, usually in inheritance |
http://c2.com/cgi/wiki?DontNameClassesObjectManagerHandlerOrData http://www.bright-green.com/blog/2003_02_25/naming_java_classes_without_a.html http://stackoverflow.com/questions/1866794/naming-classes-how-to-avoid-calling-everything-a-whatevermanager http://stackoverflow.com/questions/1194403/what-names-do-you-find-yourself-prepending-appending-to-classes-regularly http://stackoverflow.com/questions/38019/whats-the-best-approach-to-naming-classes Book that came up as suggestion to read in several discussions: Patterns of Enterprise Application Architecture
Use -fno-omit-framepointer to get callgraph with optimized builds g++ … -O2 -fno-omit-framepointer perf record -g <binary> perf report -g perf report -g 'graph,0.5,caller'
Defeat optimizer.. http://www.youtube.com/watch?v=nXaxk27zwlk
static void esacpe( void* p ) { asm volatile( "" : : "g"(p) : "memory" ); } static void clobber() { asm volatise( "" : : : "memory" ); } static void bench_reserve( benchmark::State &state ) { while( state.KeepRunning() ) { std::vector< int > v; v.reserve( 1 ); escape( v.data() ); } } static void bench_push_back( benchmark::State &state ) { while( state.KeepRunning() ) { std::vector< int > v; v.reserve( 1 ); escape( v.data() ); v.push_back( 42 ); clobber(); } }
Det finns en prescale counter också som kan sänka hastigheten på timern. Kan du se vad T0PC är satt till? Om allt är vettigt konfigurerat kan man nog garantera att man inte missar en tick. Här kommer mer info som jag sammanställt från manual/datasheet. Kan skicka om sen när du är vi datorn. CCLK - processor clock - assuming 60MHz APB - peripheral bus divider - defaults to 1/4 of CCLK - 15MHz PCLK - peripheral clock - 15MHz T0PC - T0 prescale counter - ticks with PCLK speed T0PR - T0 prescale register - T0PC counts to this value then resets to 0 T0TC - ticks every time prescale counter T0PC equals T0PR, so if T0PR is 4 T0TC ticks with 1/4 speed of PCLK
#define ASM_CMT(str) asm volatile("# @@@ " str) //In code. Outputs "# @@@ Hi, I'm here!" in the generated asm ASM_CMT("Hi, I'm here!");