static vs unnamed namespace
От: maguadron  
Дата: 14.08.06 17:27
Оценка:
vc7.1

test1.cpp
#include "test.h"

int main()
{
    extern void bar();
    bar();
    foo();
    return 0;
}


test2.cpp
#include "test.h"

void bar()
{
    foo();
}


первый вариант:
test.h
static void foo()
{
    DWORD sign = 0xC0DEC0DE;
    printf("%08X\n", sign);
}

в бинарнике получаем две переменные sign и две функции foo() (одна заинлайнена)

второй вариант:
test.h
namespace
{
    void foo()
    {
        DWORD sign = 0xC0DEC0DE;
        printf("%08X\n", sign);
    }
}

в бинарнике получаем одну переменную sign и одну функцию foo()

получается используя unnamed namespace теперь можно преспокойно define любые функции в *.h instead of *.cpp?
где можно почитать про данное поведение?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.